Hallo zusammen,
aktuell habe ich 2 Themen bei denen ich nicht weiterkomme.
Gerne würde ich den bestätigten Liefertermin aus den EK-Belegen per SQL abfragen. Leider finde ich nur den "vwKHK_AC_EKPositionen.Liefertermin". Wisst ihr in welcher Tabelle der bestätigte Liefertermin auftaucht?
Zudem würde ich gerne den Lieferstatus des der EKPositionen erfassen. Wenn Position geliefert wurde, dann -1, sonst 0. In der "vwKHK_AC_EKPositionen.GGGeliefert" tauchen beide Belegarten auf. Wareneingang (ELL) und Bestellung (EBB). Dies führt leider dazu, dass durch den LeftJoin die Positionen dann doppelt auftauchen.
Gibt es eine Möglichkeit eine SQL Abfrage so zu gestalten, dass wenn es nur einen Bestellbeleg gibt, der Wert auf 0 steht. Sobald ein Wareneingangsbeleg auftaucht wird -1 ausgegeben?
Anbei der aktuelle SQL Befehl, ich hoffe niemanden hiermit zu überfahren
SELECT DISTINCT KHKVKVorgaengePositionen.VorID AS VKVorgangsnummer, KHKVKVorgaengePositionen.VorPosID AS VKBelegnummer, KHKVKBelege.BelID, KHKVKBelege.Belegart, KHKVKBelege.Vertreter, KHKVKBelege.A0Empfaenger, KHKVKBelege.USER_Liefertermin AS VK_USER_Liefertermin, KHKVKBelege.Liefertermin AS VKLiefertermin, MIN(KHKVKBelege.A0Matchcode) AS A0Matchcode, KHKVKBelegePositionen.Artikelnummer, KHKEKBelegePositionenBedarfVerursacher.BelPosID, vwKHK_AC_EKPositionen.GGBestellt AS EK_Bestellt, KHKEKBelege.VorID AS 'EK_Vorgangs_ID', vwKHK_AC_EKPositionen.GGGeliefert AS EK_Geliefert, vwKHK_AC_EKPositionen.Liefertermin AS EK_Liefertermin, KHKVKBelegePositionen.Bezeichnung1, MIN(KHKVKBelegePositionen.Lieferwoche) AS Lieferwoche, MIN(KHKVKBelegePositionen.Liefertermin) AS Liefertermin, MIN(KHKVKBelegePositionen.[Index]) AS PosIndex, KHKVKBelegePositionen.Menge, KHKVKBelegePositionen.Mengeneinheit, KHKVKBelegePositionen.Einzelpreis AS VKEinzelpreis, KHKVKBelegePositionen.Gesamtpreis AS VKGesamtpreis, SUM(KHKVKBelegePositionen.GesamtpreisInternEW) AS Preis, (CAST(SUM(KHKVKBelegePositionen.GesamtpreisInternEW) AS FLOAT) / CAST(MIN(KHKVKVorgaengePositionen.GGBestellt) AS FLOAT)) * (MIN(KHKVKVorgaengePositionen.GGBestellt) - MIN(KHKVKVorgaengePositionen.GGGeliefert)) * (KHKVKVorgaenge.GGErfuellt + 1) AS OffWert, (CAST(SUM(KHKVKBelegePositionen.GesamtpreisInternEW) AS FLOAT) / CAST(MIN(KHKVKVorgaengePositionen.GGBestellt) AS FLOAT)) * (MIN(KHKVKVorgaengePositionen.GGBestellt) - MIN(KHKVKVorgaengePositionen.GGBerechnet)) AS 'AB - RE', (MIN(KHKVKVorgaengePositionen.GGBestellt) - MIN(KHKVKVorgaengePositionen.GGGeliefert)) AS MengenDiff, (MIN(KHKVKVorgaengePositionen.GGBestellt) - MIN(KHKVKVorgaengePositionen.GGBerechnet)) AS 'Menge bestellt - berechnet', KHKVKVorgaenge.Erstanlage AS VKErstanlage, KHKArtikel.Lagerfuehrung, KHKVKVorgaenge.GGErfuellt FROM (([...].dbo.KHKVKVorgaenge INNER JOIN[...].dbo.KHKVKVorgaengePositionen ON(KHKVKVorgaenge.Mandant = KHKVKVorgaengePositionen.Mandant) AND(KHKVKVorgaenge.VorID = KHKVKVorgaengePositionen.VorID))INNER JOIN[...].dbo.KHKVKBelegePositionen ON(KHKVKVorgaengePositionen.VorPosID = KHKVKBelegePositionen.VorPosID) AND(KHKVKVorgaengePositionen.Mandant = KHKVKBelegePositionen.Mandant)) INNER JOIN[...].dbo.KHKVKBelege ON(KHKVKBelegePositionen.Mandant = KHKVKBelege.Mandant) AND(KHKVKBelegePositionen.BelID = KHKVKBelege.BelID)LEFT JOIN[...].dbo.KHKEKBelegePositionenBedarfVerursacher ON(KHKVKVorgaengePositionen.VorPosID = KHKEKBelegePositionenBedarfVerursacher.ReferenzID) LEFT JOIN[...].dbo.vwKHK_AC_EKPositionen ON(KHKEKBelegePositionenBedarfVerursacher.BelPosID = vwKHK_AC_EKPositionen.BelPosID) LEFT JOIN[...].dbo.KHKLagerplatzbestaende ON(KHKVKBelegePositionen.Artikelnummer = KHKLagerplatzbestaende.Artikelnummer) AND(KHKLagerplatzbestaende.Lagerkennung = 'Bestand') LEFT JOIN[...].dbo.KHKArtikel ON(KHKArtikel.Artikelnummer = KHKVKBelegePositionen.Artikelnummer)
LEFT JOIN KHKEKBelegePositionen ON (KHKEKBelegePositionenBedarfVerursacher.BelPosID = KHKEKBelegePositionen.BelPosID)
LEFT JOIN KHKEKBelege ON(KHKEKBelege.BelID = KHKEKBelegePositionen.BelID)
WHERE KHKEKBELEGE.Belegkennzeichen IN ('EBB' ,'ELL') AND KHKVKVorgaengePositionen.GGBestellt > 0 AND KHKVKVorgaengePositionen.PosType = 1 AND KHKVKBelege.Mandant = 1 AND KHKVKBelege.Belegkennzeichen IN('VSD','VSS','VVA','VVX', 'VFR', 'VSL', 'VFS') AND KHKVKBelege.SaveStatus = 2 GROUP BY KHKEKBelegePositionen.IstErledigt, KHKEKBelege.VorID, KHKArtikel.Lagerfuehrung, KHKVKVorgaengePositionen.GGGeliefert, KHKVKVorgaengePositionen.VorPosID, KHKVKBelegePositionen.Artikelnummer, KHKVKBelege.BelID, KHKVKBelege.Belegart, KHKVKBelege.Vertreter, KHKVKBelege.USER_Liefertermin, KHKVKBelege.Liefertermin, KHKVKBelegePositionen.Menge, KHKVKBelegePositionen.Mengeneinheit, KHKVKBelegePositionen.Einzelpreis, KHKVKBelegePositionen.Gesamtpreis, KHKEKBelegePositionenBedarfVerursacher.BelPosID, vwKHK_AC_EKPositionen.GGBestellt, vwKHK_AC_EKPositionen.GGGeliefert, vwKHK_AC_EKPositionen.Liefertermin, KHKVKBelegePositionen.Bezeichnung1, KHKVKBelege.A0Empfaenger, KHKVKVorgaenge.GGErfuellt, KHKVKVorgaengePositionen.VorID, KHKVKVorgaenge.Erstanlage
aktuell habe ich 2 Themen bei denen ich nicht weiterkomme.
Gerne würde ich den bestätigten Liefertermin aus den EK-Belegen per SQL abfragen. Leider finde ich nur den "vwKHK_AC_EKPositionen.Liefertermin". Wisst ihr in welcher Tabelle der bestätigte Liefertermin auftaucht?
Zudem würde ich gerne den Lieferstatus des der EKPositionen erfassen. Wenn Position geliefert wurde, dann -1, sonst 0. In der "vwKHK_AC_EKPositionen.GGGeliefert" tauchen beide Belegarten auf. Wareneingang (ELL) und Bestellung (EBB). Dies führt leider dazu, dass durch den LeftJoin die Positionen dann doppelt auftauchen.
Gibt es eine Möglichkeit eine SQL Abfrage so zu gestalten, dass wenn es nur einen Bestellbeleg gibt, der Wert auf 0 steht. Sobald ein Wareneingangsbeleg auftaucht wird -1 ausgegeben?
Anbei der aktuelle SQL Befehl, ich hoffe niemanden hiermit zu überfahren
SELECT DISTINCT KHKVKVorgaengePositionen.VorID AS VKVorgangsnummer, KHKVKVorgaengePositionen.VorPosID AS VKBelegnummer, KHKVKBelege.BelID, KHKVKBelege.Belegart, KHKVKBelege.Vertreter, KHKVKBelege.A0Empfaenger, KHKVKBelege.USER_Liefertermin AS VK_USER_Liefertermin, KHKVKBelege.Liefertermin AS VKLiefertermin, MIN(KHKVKBelege.A0Matchcode) AS A0Matchcode, KHKVKBelegePositionen.Artikelnummer, KHKEKBelegePositionenBedarfVerursacher.BelPosID, vwKHK_AC_EKPositionen.GGBestellt AS EK_Bestellt, KHKEKBelege.VorID AS 'EK_Vorgangs_ID', vwKHK_AC_EKPositionen.GGGeliefert AS EK_Geliefert, vwKHK_AC_EKPositionen.Liefertermin AS EK_Liefertermin, KHKVKBelegePositionen.Bezeichnung1, MIN(KHKVKBelegePositionen.Lieferwoche) AS Lieferwoche, MIN(KHKVKBelegePositionen.Liefertermin) AS Liefertermin, MIN(KHKVKBelegePositionen.[Index]) AS PosIndex, KHKVKBelegePositionen.Menge, KHKVKBelegePositionen.Mengeneinheit, KHKVKBelegePositionen.Einzelpreis AS VKEinzelpreis, KHKVKBelegePositionen.Gesamtpreis AS VKGesamtpreis, SUM(KHKVKBelegePositionen.GesamtpreisInternEW) AS Preis, (CAST(SUM(KHKVKBelegePositionen.GesamtpreisInternEW) AS FLOAT) / CAST(MIN(KHKVKVorgaengePositionen.GGBestellt) AS FLOAT)) * (MIN(KHKVKVorgaengePositionen.GGBestellt) - MIN(KHKVKVorgaengePositionen.GGGeliefert)) * (KHKVKVorgaenge.GGErfuellt + 1) AS OffWert, (CAST(SUM(KHKVKBelegePositionen.GesamtpreisInternEW) AS FLOAT) / CAST(MIN(KHKVKVorgaengePositionen.GGBestellt) AS FLOAT)) * (MIN(KHKVKVorgaengePositionen.GGBestellt) - MIN(KHKVKVorgaengePositionen.GGBerechnet)) AS 'AB - RE', (MIN(KHKVKVorgaengePositionen.GGBestellt) - MIN(KHKVKVorgaengePositionen.GGGeliefert)) AS MengenDiff, (MIN(KHKVKVorgaengePositionen.GGBestellt) - MIN(KHKVKVorgaengePositionen.GGBerechnet)) AS 'Menge bestellt - berechnet', KHKVKVorgaenge.Erstanlage AS VKErstanlage, KHKArtikel.Lagerfuehrung, KHKVKVorgaenge.GGErfuellt FROM (([...].dbo.KHKVKVorgaenge INNER JOIN[...].dbo.KHKVKVorgaengePositionen ON(KHKVKVorgaenge.Mandant = KHKVKVorgaengePositionen.Mandant) AND(KHKVKVorgaenge.VorID = KHKVKVorgaengePositionen.VorID))INNER JOIN[...].dbo.KHKVKBelegePositionen ON(KHKVKVorgaengePositionen.VorPosID = KHKVKBelegePositionen.VorPosID) AND(KHKVKVorgaengePositionen.Mandant = KHKVKBelegePositionen.Mandant)) INNER JOIN[...].dbo.KHKVKBelege ON(KHKVKBelegePositionen.Mandant = KHKVKBelege.Mandant) AND(KHKVKBelegePositionen.BelID = KHKVKBelege.BelID)LEFT JOIN[...].dbo.KHKEKBelegePositionenBedarfVerursacher ON(KHKVKVorgaengePositionen.VorPosID = KHKEKBelegePositionenBedarfVerursacher.ReferenzID) LEFT JOIN[...].dbo.vwKHK_AC_EKPositionen ON(KHKEKBelegePositionenBedarfVerursacher.BelPosID = vwKHK_AC_EKPositionen.BelPosID) LEFT JOIN[...].dbo.KHKLagerplatzbestaende ON(KHKVKBelegePositionen.Artikelnummer = KHKLagerplatzbestaende.Artikelnummer) AND(KHKLagerplatzbestaende.Lagerkennung = 'Bestand') LEFT JOIN[...].dbo.KHKArtikel ON(KHKArtikel.Artikelnummer = KHKVKBelegePositionen.Artikelnummer)
LEFT JOIN KHKEKBelegePositionen ON (KHKEKBelegePositionenBedarfVerursacher.BelPosID = KHKEKBelegePositionen.BelPosID)
LEFT JOIN KHKEKBelege ON(KHKEKBelege.BelID = KHKEKBelegePositionen.BelID)
WHERE KHKEKBELEGE.Belegkennzeichen IN ('EBB' ,'ELL') AND KHKVKVorgaengePositionen.GGBestellt > 0 AND KHKVKVorgaengePositionen.PosType = 1 AND KHKVKBelege.Mandant = 1 AND KHKVKBelege.Belegkennzeichen IN('VSD','VSS','VVA','VVX', 'VFR', 'VSL', 'VFS') AND KHKVKBelege.SaveStatus = 2 GROUP BY KHKEKBelegePositionen.IstErledigt, KHKEKBelege.VorID, KHKArtikel.Lagerfuehrung, KHKVKVorgaengePositionen.GGGeliefert, KHKVKVorgaengePositionen.VorPosID, KHKVKBelegePositionen.Artikelnummer, KHKVKBelege.BelID, KHKVKBelege.Belegart, KHKVKBelege.Vertreter, KHKVKBelege.USER_Liefertermin, KHKVKBelege.Liefertermin, KHKVKBelegePositionen.Menge, KHKVKBelegePositionen.Mengeneinheit, KHKVKBelegePositionen.Einzelpreis, KHKVKBelegePositionen.Gesamtpreis, KHKEKBelegePositionenBedarfVerursacher.BelPosID, vwKHK_AC_EKPositionen.GGBestellt, vwKHK_AC_EKPositionen.GGGeliefert, vwKHK_AC_EKPositionen.Liefertermin, KHKVKBelegePositionen.Bezeichnung1, KHKVKBelege.A0Empfaenger, KHKVKVorgaenge.GGErfuellt, KHKVKVorgaengePositionen.VorID, KHKVKVorgaenge.Erstanlage