Vorhin für einen Kunden zusammen gebaut und ich will es niemanden vor enthalten, vielleicht könnt ihr das auch nutzen:
SQL:
SELECT
tLieferantenBestellung.cEigeneBestellnummer
,tLieferantenBestellungPos.cArtNr
,tLieferantenBestellungPos.fMenge
,tLieferantenBestellungPos.cName
,tLieferantenBestellungPos.fEKNetto
,tLieferantenBestellungPos.fMenge * tLieferantenBestellungPos.fEKNetto AS "Netto Gesamt"
,fSummePositionenNetto
FROM dbo.tBestellung
RIGHT JOIN dbo.tLieferantenBestellung ON tLieferantenBestellung.cBezugsAuftragsNummer = tBestellung.cBestellNr
JOIN dbo.tLieferantenBestellungPos ON tLieferantenBestellungPos.kLieferantenBestellung = tLieferantenBestellung.kLieferantenBestellung
LEFT JOIN (SELECT
tLieferantenBestellungPos.kLieferantenBestellung,
SUM(tLieferantenBestellungPos.fEKNetto * tLieferantenbestellungPos.fMenge) AS fSummePositionenNetto,
SUM(tLieferantenBestellungPos.fEKNetto * tLieferantenBestellungPos.fMenge * (1 + (tLieferantenBestellungPos.fUST / 100))) AS fSummePositionenBrutto,
COUNT(tLieferantenBestellungPos.kLieferantenBestellungPos) AS nAnzahlPositionen,
SUM(tLieferantenBestellungPos.fMengeGeliefert) AS fMengeGeliefert,
CASE
WHEN SUM(tLieferantenBestellungPos.fMenge) > 0
THEN (1 - (SUM(tLieferantenBestellungPos.fMenge - tLieferantenBestellungPos.fMengeGeliefert) / SUM(tLieferantenBestellungPos.fMenge))) * 100
ELSE 0
END AS fProzentGeliefert,
SUM(CASE
WHEN tLieferantenBestellungPos.nPosTyp != 6
THEN tLieferantenBestellungPos.fMenge
ELSE 0
END) AS fGesamtmenge
FROM tLieferantenbestellungPos
GROUP BY tLieferantenbestellungPos.kLieferantenbestellung) PositionDaten ON PositionDaten.kLieferantenBestellung = tLieferantenBestellung.kLieferantenBestellung
WHERE kBestellung = @Key