timohorn
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(ISB N, 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_informati e
ORDER BY ISBN EXEC sp_executesql @SQL EXEC sp_executesql @SQL
UPDATE Voorraadstaatmaand
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(ISB
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_informati
ORDER BY ISBN EXEC sp_executesql @SQL EXEC sp_executesql @SQL
UPDATE Voorraadstaatmaand
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
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)
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)
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Had to assign some parameters again, but the help showed me the right direction
https://www.experts-exchange.com/A_1499.html