Neu SQL: Positionen eines Auftrags sind auf welchem Lieferschein gelandet?

John

Sehr aktives Mitglied
3. März 2012
4.017
1.006
Berlin
Hi,

ich suche die Verbindung zwischen Artikeln eines Auftrages und den Lieferscheinen.

[Verkauf].[tAuftrag] hat die Positionen in [Verkauf].[tAuftragPosition]
und
[dbo].[tLieferschein] hat die Positionen in [dbo].[tLieferscheinPos]

aber wie ist die Verbindung zwischen den beiden Bereichen realisiert?
Ich möchte abfragen, über welchen Lieferschein bzw. aus welchem Lager die Positionen eines Auftrags raus gegangen sind.

John
 

frankell

Sehr aktives Mitglied
9. September 2019
2.634
815
Flensburg
[Verkauf].[tAuftrag] und [dbo].[tLieferschein] teilen die Auftragsrelation, in tAuftrag kAuftrag und in tLieferschein kBestellung genannt. kBestellung ist der alte Begriff, der vor allem in älteren Tabellen genutzt wird, kAuftrag der neuere.
 

frankell

Sehr aktives Mitglied
9. September 2019
2.634
815
Flensburg
Ah, Du meinst Deckungsgleichheit der (Reihenfolge der) Positionen? Ich behaupte mal ganz keck, dass diese gar nicht immer gegeben sein kann, allein schon bei Teillieferungen oder ggf. auch hinsichtlich Stücklisten und der Versandposition, Freipositionen usw.

Da bliebe nur der Vergleich über kArtikel.
 

John

Sehr aktives Mitglied
3. März 2012
4.017
1.006
Berlin
@frankell erstmal vielen Dank für's mit Reinschauen.
Es sind ja außer Dir und @mh1 nicht mehr viele hier, die etwas tiefer als die GUI einsteigen ;)

Ich habe zwei Standardläger, die meine Bestellungen erfüllen und möchte auswerten, welches Lager welchen Umsatz erzeugt hat und zwar bei nur bei den Aufträgen eines bestimmten Kunden.
Das ganze hat Abrechnungsgründe.

Dazu habe ich mir aus dem Wawi Bereich Versand -> Lieferscheine die Lv für die Positionen je Lieferschein besorgt.
[Versand].[lvLieferscheinWarenlagerausgang] liefert mit cWarenlagerName das Quelllager.

Ich denke, ich habe es dann mit
Code:
SELECT
Verkauf.tAuftrag.*,
tLieferschein.*,
tLieferscheinPos.*,
Verkauf.tAuftragPosition.*,
Versand.lvLieferscheinWarenlagerausgang.*
FROM tLieferschein
JOIN Verkauf.tAuftrag ON Verkauf.tAuftrag.kAuftrag = tLieferschein.kBestellung
JOIN Versand.lvLieferscheinWarenlagerausgang ON Versand.lvLieferscheinWarenlagerausgang.kLieferschein = tLieferschein.kLieferschein
JOIN tLieferscheinPos ON tLieferscheinPos.kLieferscheinPos = Versand.lvLieferscheinWarenlagerausgang.kLieferscheinPos
JOIN Verkauf.tAuftragPosition ON Verkauf.tAuftragPosition.kAuftragPosition = tLieferscheinPos.kBestellPos
WHERE Verkauf.tAuftrag.nType = 1
AND  Verkauf.tAuftrag.nStorno = 0
AND Verkauf.tAuftrag.kKunde = 12345

Das kAuftragPosition und kBestellPos die Relation bilden, ist in der Tat namentlich verwirrend.
 

John

Sehr aktives Mitglied
3. März 2012
4.017
1.006
Berlin
Etas aufgehübscht, falls es mal jemand braucht...

Code:
SELECT
Verkauf.tAuftrag.cAuftragsNr,
Verkauf.tAuftrag.cExterneAuftragsnummer,
FORMAT(Verkauf.tAuftrag.dErstellt, 'd', 'de-de') AS 'Auftrag erstellt am',
Verkauf.tAuftrag.cKundenNr,
tAdresse.cFirma AS Firma,
Verkauf.tAuftrag.cWaehrung,
tLieferschein.cLieferscheinNr,
Versand.lvLieferscheinWarenlagerausgang.cWarenlagerName,
Verkauf.tAuftragPosition.cArtNr,
Verkauf.tAuftragPosition.cNameStandard,
FORMAT(Versand.lvLieferscheinWarenlagerausgang.fAnzahl, 'G', 'de-de') AS Menge,
FORMAT(Verkauf.tAuftragPosition.fVkNetto, 'G', 'de-de') AS EinzelpreisNetto,
FORMAT(Verkauf.tAuftragPosition.fMwSt, 'G', 'de-de') AS MwSt,
FORMAT(Verkauf.tAuftragPosition.fRabatt, 'G', 'de-de') AS RabattProzent,
FORMAT(Versand.lvLieferscheinWarenlagerausgang.fAnzahl * (Verkauf.tAuftragPosition.fVkNetto - (Verkauf.tAuftragPosition.fVkNetto / 100 * Verkauf.tAuftragPosition.fRabatt)), 'G', 'de-de')  AS GesamtNetto
FROM tLieferschein
JOIN Verkauf.tAuftrag ON Verkauf.tAuftrag.kAuftrag = tLieferschein.kBestellung
JOIN Versand.lvLieferscheinWarenlagerausgang ON Versand.lvLieferscheinWarenlagerausgang.kLieferschein = tLieferschein.kLieferschein
JOIN tLieferscheinPos ON tLieferscheinPos.kLieferscheinPos = Versand.lvLieferscheinWarenlagerausgang.kLieferscheinPos
JOIN Verkauf.tAuftragPosition ON Verkauf.tAuftragPosition.kAuftragPosition = tLieferscheinPos.kBestellPos
JOIN tAdresse ON tAdresse.kKunde = Verkauf.tAuftrag.kKunde
WHERE Verkauf.tAuftrag.nType = 1
AND  Verkauf.tAuftrag.nStorno = 0
AND tAdresse.nStandard = 1
AND Verkauf.tAuftrag.kKunde = 1234
ORDER BY Verkauf.tAuftrag.kAuftrag, tLieferschein.kLieferschein, tLieferscheinPos.kLieferscheinPos ASC
 
  • Gefällt mir
Reaktionen: frankell

frankell

Sehr aktives Mitglied
9. September 2019
2.634
815
Flensburg
Etas aufgehübscht, falls es mal jemand braucht...

Code:
SELECT
Verkauf.tAuftrag.cAuftragsNr,
Verkauf.tAuftrag.cExterneAuftragsnummer,
FORMAT(Verkauf.tAuftrag.dErstellt, 'd', 'de-de') AS 'Auftrag erstellt am',
Verkauf.tAuftrag.cKundenNr,
tAdresse.cFirma AS Firma,
Verkauf.tAuftrag.cWaehrung,
tLieferschein.cLieferscheinNr,
Versand.lvLieferscheinWarenlagerausgang.cWarenlagerName,
Verkauf.tAuftragPosition.cArtNr,
Verkauf.tAuftragPosition.cNameStandard,
FORMAT(Versand.lvLieferscheinWarenlagerausgang.fAnzahl, 'G', 'de-de') AS Menge,
FORMAT(Verkauf.tAuftragPosition.fVkNetto, 'G', 'de-de') AS EinzelpreisNetto,
FORMAT(Verkauf.tAuftragPosition.fMwSt, 'G', 'de-de') AS MwSt,
FORMAT(Verkauf.tAuftragPosition.fRabatt, 'G', 'de-de') AS RabattProzent,
FORMAT(Versand.lvLieferscheinWarenlagerausgang.fAnzahl * (Verkauf.tAuftragPosition.fVkNetto - (Verkauf.tAuftragPosition.fVkNetto / 100 * Verkauf.tAuftragPosition.fRabatt)), 'G', 'de-de')  AS GesamtNetto
FROM tLieferschein
JOIN Verkauf.tAuftrag ON Verkauf.tAuftrag.kAuftrag = tLieferschein.kBestellung
JOIN Versand.lvLieferscheinWarenlagerausgang ON Versand.lvLieferscheinWarenlagerausgang.kLieferschein = tLieferschein.kLieferschein
JOIN tLieferscheinPos ON tLieferscheinPos.kLieferscheinPos = Versand.lvLieferscheinWarenlagerausgang.kLieferscheinPos
JOIN Verkauf.tAuftragPosition ON Verkauf.tAuftragPosition.kAuftragPosition = tLieferscheinPos.kBestellPos
JOIN tAdresse ON tAdresse.kKunde = Verkauf.tAuftrag.kKunde
WHERE Verkauf.tAuftrag.nType = 1
AND  Verkauf.tAuftrag.nStorno = 0
AND tAdresse.nStandard = 1
AND Verkauf.tAuftrag.kKunde = 1234
ORDER BY Verkauf.tAuftrag.kAuftrag, tLieferschein.kLieferschein, tLieferscheinPos.kLieferscheinPos ASC
Cool, vielen Dank für's Teilen! :thumbsup:
 

Ähnliche Themen