Link to home
Start Free TrialLog in
Avatar of timohorn
timohornFlag for Netherlands

asked on

select min date in sp (dts) does not get the right date

SET              NOCOUNT ON
                      DECLARE @Peildatum datetime DECLARE @Test datetime DECLARE @Beginvoorraad int DECLARE @Eindvoorraad int DECLARE @Inslag int DECLARE
                       @SQL nvarchar(600) DECLARE @begindatum datetime DECLARE @einddatum datetime DECLARE @date datetime, @first datetime,
                      @last datetime
SET              @date = getdate()
SET              @begindatum = cast(month(@date) AS varchar(2)) + '/1/' + cast(year(@date) AS varchar(4))
                          DELETE FROM Voorraadstaatmaand
SET              @Test =
                          (SELECT     MIN(Datum)
                            FROM          DW_Voorraadstanden
                            WHERE      DateName(mm, Datum) + '-' + DateName(yyyy, Datum) = DateName(mm, @Begindatum) + '-' + DateName(yyyy, @Begindatum))
SET              @Einddatum =
                          (SELECT     MAX(Faktuur_dat)
                            FROM          DW_Uitgevoerde_opdrachten
                            WHERE      Faktuur_dat <= @Einddatum)
SET              @Peildatum = getdate()
                          INSERT      
                           INTO            dbo.Voorraadstaatmaand(ISBN, Auteur, Titel, Fonds, Stadium_levenscyclus, Stadium_dienstverlening, Versch_dat_eerste_druk, Prijs,
                                                  Vervangen_door, Versch_dat_laatste_druk, kostprijs)
                                                      SELECT     ISBN, Auteur, Titel, Fonds, Stadium_levenscyclus, Stadium_dienstverlening, Versch_dat_eerste_druk, Prijs, Vervangen_door,
                                                                              versch_dat_laatste_druk, kostprijs
                                                       FROM         dbo.W_DW_artikel_informatie
                                                       ORDER BY ISBN EXEC sp_executesql @SQL EXEC sp_executesql @SQL
                                                                                  UPDATE    Voorraadstaatmaand
Avatar of Guy Hengel [angelIII / a3]
Guy Hengel [angelIII / a3]
Flag of Luxembourg image

date and time handling is easy... if you know how to approach it exactly:
https://www.experts-exchange.com/A_1499.html
SOLUTION
Avatar of gsiric
gsiric

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of timohorn

ASKER

the begin date is always the first of the month 1 ja, 1 feb etc etc
i can fill the table with the data,  the problem start when i want to update the table.
i think that the part

   SET              @Einddatum =
                          (SELECT     MAX(Faktuur_dat)
                            FROM          DW_Uitgevoerde_opdrachten
                            WHERE      Faktuur_dat <= @Einddatum)        

does n't get any date,if i run it as stored procedure from msacces it works (little adjustment)

SET              NOCOUNT ON 
                      DECLARE @Peildatum datetime DECLARE @Test datetime DECLARE @Beginvoorraad int DECLARE @Eindvoorraad int DECLARE @Inslag int DECLARE
                       @SQL nvarchar(600) DECLARE @begindatum datetime DECLARE @einddatum datetime DECLARE @date datetime, @first datetime, 
                      @last datetime
SET              @date = getdate()
SET              @begindatum = cast(month(@date) AS varchar(2)) + '/1/' + cast(year(@date) AS varchar(4))
                          DELETE FROM Voorraadstaatmaand
SET              @Test =
                          (SELECT     MIN(Datum)
                            FROM          DW_Voorraadstanden
                            WHERE      DateName(mm, Datum) + '-' + DateName(yyyy, Datum) = DateName(mm, @Begindatum) + '-' + DateName(yyyy, @Begindatum))
SET              @Einddatum =
                          (SELECT     MAX(Faktuur_dat)
                            FROM          DW_Uitgevoerde_opdrachten
                            WHERE      Faktuur_dat <= @Einddatum)
SET              @Peildatum = getdate()
                          INSERT      
                           INTO            dbo.Voorraadstaatmaand(ISBN, Auteur, Titel, Fonds, Stadium_levenscyclus, Stadium_dienstverlening, Versch_dat_eerste_druk, Prijs, 
                                                  Vervangen_door, Versch_dat_laatste_druk, kostprijs)
                                                      SELECT     ISBN, Auteur, Titel, Fonds, Stadium_levenscyclus, Stadium_dienstverlening, Versch_dat_eerste_druk, Prijs, Vervangen_door, 
                                                                              versch_dat_laatste_druk, kostprijs
                                                       FROM         dbo.W_DW_artikel_informatie
                                                       ORDER BY ISBN EXEC sp_executesql @SQL EXEC sp_executesql @SQL
                                                                                  UPDATE    Voorraadstaatmaand
                                                                                   SET              @Eindvoorraad =
                                                                                                              (SELECT     Aantal
                                                                                                                FROM          DW_Voorraadstanden
                                                                                                                WHERE      ISBN = Voorraadstaatmaand.ISBN AND Datum = @Peildatum), 
                                                                                                          Eindvoorraad = (CASE WHEN @Eindvoorraad IS NULL THEN 0 ELSE @Eindvoorraad END), 
                                                                                                          @Beginvoorraad =
                                                                                                              (SELECT     Aantal
                                                                                                                FROM          DW_Voorraadstanden
                                                                                                                WHERE      ISBN = Voorraadstaatmaand.ISBN AND Datum = @Test), @Inslag =
                                                                                                              (SELECT     aantal
                                                                                                                FROM          DW_Goederenbeweging_CB_som
                                                                                                                WHERE      ISBN = Voorraadstaatmaand.ISBN AND (Mutatie_kd = 'GONCO' OR
                                                                                                                                       Mutatie_kd = 'DISASSI') AND Datum = @Test), 
                                                                                                          Beginvoorraad = (CASE WHEN @Beginvoorraad IS NULL THEN 0 ELSE @Beginvoorraad END) 
                                                                                                          - (CASE WHEN @Inslag IS NULL THEN 0 ELSE @Inslag END), Inslag =
                                                                                                              (SELECT     CASE WHEN SUM(Aantal) IS NULL THEN 0 ELSE SUM(Aantal) END
                                                                                                                FROM          DW_Goederenbeweging_CB
                                                                                                                WHERE      ISBN = Voorraadstaatmaand.ISBN AND (Mutatie_kd = 'GONCO' OR
                                                                                                                                       Mutatie_kd = 'DISASSI') AND Datum >= @Test AND Datum <= @Einddatum), 
                                                                                                          Aantal_aanbieding =
                                                                                                              (SELECT     CASE WHEN SUM(Aantal_verkopen) IS NULL THEN 0 ELSE SUM(Aantal_verkopen) END
                                                                                                                FROM          DW_Uitgevoerde_opdrachten
                                                                                                                WHERE      ISBN = Voorraadstaatmaand.ISBN AND Transactie_vwc <> 'DUD' AND Verkoopsoort = 'AANB' AND 
                                                                                                                                       Distributeur = 'C' AND Faktuur_dat >= @Begindatum AND Faktuur_dat <= @Einddatum), 
                                                                                                          Aantal_herbevoorrading =
                                                                                                              (SELECT     CASE WHEN SUM(Aantal_verkopen) IS NULL THEN 0 ELSE SUM(Aantal_verkopen) END
                                                                                                                FROM          DW_Uitgevoerde_opdrachten
                                                                                                                WHERE      ISBN = Voorraadstaatmaand.ISBN AND Transactie_vwc <> 'DUD' AND Verkoopsoort = 'NORM' AND 
                                                                                                                                       Opdracht_type <> 'LPROM' AND Distributeur = 'C' AND Faktuur_dat >= @Begindatum AND 
                                                                                                                                       Faktuur_dat <= @Einddatum), Aantal_depot =
                                                                                                              (SELECT     CASE WHEN SUM(Aantal_verkopen) IS NULL THEN 0 ELSE SUM(Aantal_verkopen) END
                                                                                                                FROM          DW_Uitgevoerde_opdrachten
                                                                                                                WHERE      ISBN = Voorraadstaatmaand.ISBN AND Transactie_vwc = 'DUD' AND Distributeur = 'C' AND 
                                                                                                                                       Faktuur_dat >= @Begindatum AND Faktuur_dat <= @Einddatum), Aantal_overig =
                                                                                                              (SELECT     CASE WHEN SUM(Aantal_verkopen) IS NULL THEN 0 ELSE SUM(Aantal_verkopen) END
                                                                                                                FROM          DW_Uitgevoerde_opdrachten
                                                                                                                WHERE      ISBN = Voorraadstaatmaand.ISBN AND Transactie_vwc <> 'DUD' AND Verkoopsoort <> 'AANB' AND 
                                                                                                                                       Verkoopsoort <> 'NORM' AND Distributeur = 'C' AND Faktuur_dat >= @Begindatum AND 
                                                                                                                                       Faktuur_dat <= @Einddatum), Aantal_retouren =
                                                                                                              (SELECT     CASE WHEN SUM(Aantal_retouren) IS NULL THEN 0 ELSE SUM(Aantal_retouren) END
                                                                                                                FROM          DW_Uitgevoerde_opdrachten
                                                                                                                WHERE      ISBN = Voorraadstaatmaand.ISBN AND Distributeur = 'C' AND Faktuur_dat >= @Begindatum AND 
                                                                                                                                       Faktuur_dat <= @Einddatum), Aantal =
                                                                                                              (SELECT     CASE WHEN SUM(Aantal) IS NULL THEN 0 ELSE SUM(Aantal) END
                                                                                                                FROM          DW_Uitgevoerde_opdrachten
                                                                                                                WHERE      ISBN = Voorraadstaatmaand.ISBN AND Opdracht_type <> 'LPROM' AND Distributeur = 'C' AND 
                                                                                                                                       Faktuur_dat >= @Begindatum AND Faktuur_dat <= @Einddatum), 
                                                                                                          Aantal_present_exemplaren =
                                                                                                              (SELECT     CASE WHEN SUM(Aantal) IS NULL THEN 0 ELSE SUM(Aantal) END
                                                                                                                FROM          DW_Uitgevoerde_opdrachten
                                                                                                                WHERE      ISBN = Voorraadstaatmaand.ISBN AND Opdracht_type = 'LPROM' AND Distributeur = 'C' AND 
                                                                                                                                       Faktuur_dat >= @Begindatum AND Faktuur_dat <= @Einddatum), Aantal_vernietigd =
                                                                                                              (SELECT     CASE WHEN SUM(Aantal) IS NULL THEN 0 ELSE - SUM(Aantal) END
                                                                                                                FROM          DW_Uitgevoerde_opdrachten
                                                                                                                WHERE      ISBN = Voorraadstaatmaand.ISBN AND (Opdracht_type = 'FRR' OR
                                                                                                                                       Opdracht_type = 'VERNIE') AND Distributeur = 'C' AND Faktuur_dat >= @Begindatum AND 
                                                                                                                                       Faktuur_dat <= @Einddatum), Aantal_in_nota =
                                                                                                              (SELECT     CASE WHEN SUM(Aantal) IS NULL THEN 0 ELSE SUM(Aantal) END
                                                                                                                FROM          DW_Openstaande_opdrachten
                                                                                                                WHERE      ISBN = Voorraadstaatmaand.ISBN), Aantal_geblokkeerd_CB =
                                                                                                              (SELECT     CASE WHEN SUM(Aantal_geblokkeerd_CB) IS NULL THEN 0 ELSE SUM(Aantal_geblokkeerd_CB) 
                                                                                                                                       END
                                                                                                                FROM          DW_Voorraadstanden
                                                                                                                WHERE      ISBN = Voorraadstaatmaand.ISBN AND Datum = @Einddatum), Aantal_geblokkeerd_eig =
                                                                                                              (SELECT     CASE WHEN SUM(Aantal_geblokkeerd_eig) IS NULL THEN 0 ELSE SUM(Aantal_geblokkeerd_eig) 
                                                                                                                                       END
                                                                                                                FROM          DW_Voorraadstanden
                                                                                                                WHERE      ISBN = Voorraadstaatmaand.ISBN AND Datum = @Einddatum), 
                                                                                                          Aantal_gereserveerd_levering =
                                                                                                              (SELECT     CASE WHEN SUM(Aantal_gereserveerd_levering) IS NULL 
                                                                                                                                       THEN 0 ELSE SUM(Aantal_gereserveerd_levering) END
                                                                                                                FROM          DW_Voorraadstanden
                                                                                                                WHERE      ISBN = Voorraadstaatmaand.ISBN AND Datum = @Einddatum)
                                                                                   FROM         Voorraadstaatmaand
                                                                                                              UPDATE    Voorraadstaatmaand
                                                                                                               SET              Voorraad_verschil = Eindvoorraad - Beginvoorraad - Inslag + Aantal + Aantal_present_exemplaren +
                                                                                                                                       Aantal_vernietigd, Geblokkeerd = (CASE WHEN Aantal_geblokkeerd_CB > 0 OR
                                                                                                                                      Aantal_geblokkeerd_eig > 0 THEN 'Geblokkeerd' END)
                                                                                                               FROM         Voorraadstaatmaand
                                                                                                                                          DELETE FROM Voorraadstaatmaand
                                                                                                                                           WHERE     Beginvoorraad = 0 AND Eindvoorraad = 0 AND Inslag = 0 AND Aantal = 0 AND 
                                                                                                                                                                  Aantal_present_exemplaren = 0 AND Aantal_vernietigd = 0 AND Aantal_in_nota = 0 AND
                                                                                                                                                                   Fonds IN
                                                                                                                                                                      (SELECT     Fonds
                                                                                                                                                                        FROM          PI_Fonds
                                                                                                                                                                        WHERE      Actief = 0)

Open in new window

ASKER CERTIFIED SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Had to assign some parameters again, but the help showed me the right direction