Neu Hilfe bei SQL abfrage wieviele Tage ein Artikel im Bestand gewesen ist?

arich001

Sehr aktives Mitglied
21. April 2021
325
49
SQL:
SELECT
  a.cArtNr AS 'Artikelnr',
  ab.cName AS 'Artikelbeschreibung',
  DATEDIFF(day, MAX(ah.dGebucht), GETDATE()) AS 'Anzahl der Tage ohne Bewegung',
  lb.fLagerbestand AS 'aktueller Lagerbestand'
FROM
  tArtikel AS a
  JOIN tArtikelBeschreibung AS ab ON a.kArtikel = ab.kArtikel
  JOIN tlagerbestand AS lb ON a.kArtikel = lb.kArtikel
  JOIN tArtikelHistory AS ah ON a.kArtikel = ah.kArtikel
WHERE
  lb.fLagerbestand > 0
  AND a.cAktiv = 'Y'
GROUP BY
  a.cArtNr,
  ab.cName,
  lb.fLagerbestand
ORDER BY 'Anzahl der Tage ohne Bewegung' DESC
Aktuell zeigt die Abfrage jede Bewegung an. Kann man das evtl. so ändern das nur die Anzahl der Tage seit dem letzten Kauf angezeigt werden ? Idealerweise in Verbindung mit dem Namen des Standardlieferanten ?
 

nenimus

Neues Mitglied
4. Dezember 2023
19
1
Das soll wo so sein:


SELECT
a.cArtNr AS 'Artikelnr',
ab.cName AS 'Artikelbeschreibung',
DATEDIFF(day, MAX(ah.dGebucht), GETDATE()) AS 'Anzahl der Tage ohne Bewegung',
CAST(lb.fLagerbestand AS INT) AS 'aktueller Lagerbestand' -- Umwandlung in Ganzzahlen
FROM
tArtikel AS a
JOIN tArtikelBeschreibung AS ab ON a.kArtikel = ab.kArtikel
JOIN tlagerbestand AS lb ON a.kArtikel = lb.kArtikel
LEFT JOIN tArtikelHistory AS ah ON a.kArtikel = ah.kArtikel
WHERE
a.kArtikel = @Key -- Hier den aktuellen Artikel identifizieren, z.B. durch eine eindeutige ID oder Artikelnummer
GROUP BY
a.cArtNr,
ab.cName,
lb.fLagerbestand
HAVING
lb.fLagerbestand > 0 AND
DATEDIFF(day, MAX(ah.dGebucht), GETDATE()) = 0
ORDER BY 'Anzahl der Tage ohne Bewegung' DESC
 

arich001

Sehr aktives Mitglied
21. April 2021
325
49
Das soll wo so sein:


SELECT
a.cArtNr AS 'Artikelnr',
ab.cName AS 'Artikelbeschreibung',
DATEDIFF(day, MAX(ah.dGebucht), GETDATE()) AS 'Anzahl der Tage ohne Bewegung',
CAST(lb.fLagerbestand AS INT) AS 'aktueller Lagerbestand' -- Umwandlung in Ganzzahlen
FROM
tArtikel AS a
JOIN tArtikelBeschreibung AS ab ON a.kArtikel = ab.kArtikel
JOIN tlagerbestand AS lb ON a.kArtikel = lb.kArtikel
LEFT JOIN tArtikelHistory AS ah ON a.kArtikel = ah.kArtikel
WHERE
a.kArtikel = @Key -- Hier den aktuellen Artikel identifizieren, z.B. durch eine eindeutige ID oder Artikelnummer
GROUP BY
a.cArtNr,
ab.cName,
lb.fLagerbestand
HAVING
lb.fLagerbestand > 0 AND
DATEDIFF(day, MAX(ah.dGebucht), GETDATE()) = 0
ORDER BY 'Anzahl der Tage ohne Bewegung' DESC
da kommt bei mir nix 🤔
 

Ähnliche Themen