Da ich keine Ahnung habe, woran ich "Bestellt" und "Geliefert" unterscheiden soll, hab' ich mal ein bisserl geraten (keine Ahnung ob
Access das kann und ohne Datenmodell und passende
DB nur Spekulatius
).
SQL-Code:
SELECT
ABFDocAuftragNr,
ABFPosArtNr,
Bestellt,
Geliefert,
Bestellt - Geliefert as Offen,
ABFPosName1
FROM (
SELECT
ABFDocAuftragNr,
ABFPosArtNr,
case when ABFPosType = 0 then ABFPosMenge else 0 end as Bestellt,
case when ABFPosType = 7 then 0 else ABFPosMenge end as Geliefert,
ABFPosName1
FROM
ABFDok
INNER JOIN
ABFPos ON ABFPos.ABFPosAuftragID = ABFDok.ABFDocAuftragID
WHERE
ABFDocOptFertig = false AND
ABFDocVisType = 1 AND
ABFPosType in (0,7)
)
ORDER BY
ABFPosArtNr
Was ich nicht verstehe: Wofür war in dem nicht so ganz korrekt funktionierenden
SQL das Group by? Um irgendwelche uminösen Dubletten zu eliminieren? Eigentlich benötig man es bei Aggregatfunktionen, da es davon aber keine im
SQL gibt, erscheint mir das irgendwie nicht plausibel. Wenn da keine unerwünschten Nebeneffekte auftreten, ist das eher Zufall.