Unten befinden sich Teile eines SQL-Mitschnitts einer Statistik-Auswertung. Daraus soll eine Workflow Mail werden, die einmal im Monat versendet wird. Im Mitschnitt ist schon jeweils ein spezielles Datum eingesetzt in den DECLARE Anweisungen. Wie kriege ich das Variabel hin, damit immer das Datum von heute und das Datum von heute+1 Monat genommen wird?
Ich habe schon damit rumgespielt und versucht und BETWEEN GETDATE() AND DATEADD(month, 1, GETDATE()) unten einzufügen (fünfte Zeile von unten), aber das scheint ein falsches Datumsformat unten einzufügen und die Abfrage kommt leer zurück. Die DECLARE Anweisung verstehe ich nicht ganz. Ist datetime eine Anweisung oder eine selbsterstellt Variable? Was bedeutet die 120?
Ich habe schon damit rumgespielt und versucht und BETWEEN GETDATE() AND DATEADD(month, 1, GETDATE()) unten einzufügen (fünfte Zeile von unten), aber das scheint ein falsches Datumsformat unten einzufügen und die Abfrage kommt leer zurück. Die DECLARE Anweisung verstehe ich nicht ganz. Ist datetime eine Anweisung oder eine selbsterstellt Variable? Was bedeutet die 120?
Code:
DECLARE @von datetime = CONVERT(datetime, '2024-04-01 00:00:00', 120);
DECLARE @bis datetime = CONVERT(datetime, '2024-04-30 23:59:59', 120);
SELECT
ISNULL(NULLIF(KundenAdresse.cFirma, ''), 'Keine Firma') AS Filiale,
SUM([Verkauf].[tAuftragPosition].fAnzahl) AS Verkaufsmenge,
ISNULL( MONTH([Verkauf].[tAuftrag].dErstellt), 0) AS Monat
FROM
[Verkauf].[tAuftragPosition]
LEFT JOIN [tArtikel] ON [tArtikel].kArtikel = [Verkauf].[tAuftragPosition].kArtikel
JOIN [Verkauf].[tAuftrag] ON [Verkauf].[tAuftrag].kAuftrag = [Verkauf].[tAuftragPosition].kAuftrag
JOIN [tkunde] ON [tkunde].kKunde = [Verkauf].[tAuftrag].kKunde
JOIN [tAdresse] AS KundenAdresse ON KundenAdresse.kKunde = [tkunde].kKunde AND (KundenAdresse.nStandard IN (1)) AND (KundenAdresse.nTyp IN (1))
WHERE
([Verkauf].[tAuftrag].nType IN (1)) AND
([Verkauf].[tAuftrag].nStorno IN (0)) AND
(ISNULL([tkunde].kKunde, 0) IN (65255,65418,65420,65421,66071,66653,83532)) AND
(ISNULL([tArtikel].kHersteller, 0) IN (804)) AND
([Verkauf].[tAuftrag].dErstellt IS NOT NULL AND [Verkauf].[tAuftrag].dErstellt BETWEEN @von AND @bis)
GROUP BY
ISNULL(NULLIF(KundenAdresse.cFirma, ''), 'Keine Firma'),
ISNULL( MONTH([Verkauf].[tAuftrag].dErstellt), 0)
ORDER BY Verkaufsmenge DESC;
;
Zuletzt bearbeitet: