Hallo,
ich bräuchte Hilfe weil ich hier eine Nuss zu knacken habe die mir zu hart ist (Access Anfänger). Ich habe EINE Tabelle die pro Jahr, Quartal und Abrechnungsziffer eine Anzahl enthält. Ich möchte nun zwei vorgegebene Quartale vergleichen. Im Beispiel unten 2011 Q1 mit 2012 Q1.
Tabelle:
Jahr Quartal Ziffer Anzahl
2011 1 1000 10
2011 1 1001 5
2011 2 1000 3
2012 1 1000 7
2012 1 1003 20
2012 3 1000 5
Gewünschtes Ergebnis
Jahr Quartal Ziffer Anzahl Jahr Quartal Ziffer Anzahl
2011 1 1000 10 2012 1 1000 7
2011 1 1001 5
2012 1 1003 20
Mit einem LEFT/RIGHT/INNER JOIN erhalte ich ein entsprechendes Ergebnis für alle Ziffern die im Jahr 2011 UND 2012 einen Wert für Anzahl haben. Für die beiden anderen Konstellationen (nur Wert in 2011 oder nur Wert in 2012) allerdings habe ich keine Lösung. Ich habe auch mit UNION experimentiert, leider vergebens, ich erhalte immer nur folgendes Ergebnis:
Jahr Quartal Ziffer Anzahl Jahr Quartal Ziffer Anzahl
2011 1 1000 10 2012 1 1000 7
Mit:
SELECT T1.*, T2.*
FROM ABRECHNUNG AS T1
LEFT JOIN ABRECHNUNG AS T2
ON T1.GNR = T2.GNR
WHERE (T2.Jahr = 2012 AND T2.Quartal=1 AND T1.Jahr = 2011 AND T1.Quartal = 1) OR (T2.Jahr Is NULL AND T2.Quartal Is NULL)
UNION SELECT T1.*, T2.*
FROM ABRECHNUNG AS T1
RIGHT JOIN ABRECHNUNG AS T2
ON T1.GNR = T2.GNR
WHERE (T2.Jahr = 2012 AND T2.Quartal=1 AND T1.Jahr = 2011 AND T1.Quartal = 1) OR (T1.Jahr Is NULL AND T1.Quartal Is NULL);
Hier der Link auf die DB in Dropbox: http://dl.dropbox.com/u/53889920/Praxis-Auswertungen_003.mdb
Hat mir jemand eine Lösung?
Vielen Dank, Till
Dein Problem ist ein Standardproblem. Mit SQL allein ist das nicht lösbar, weil das SQL das "Gitter" (~Gewünschtes Ergebnis) nicht kennt, sondern nur aufaddieren kann, was da ist.
Die Lösung dafür ist eine Zwischentabelle, die das Gitter repräsentiert. Es wird bei jedem Aufruf der Auswertung die Tabelle komplett zurückgesetzt, das leere Gitter aufgebaut und dann über die beiden Abfragen neu gefüllt. Dazu bedarf es Programmierschleifen.
Hallo,
siehe auch hier:
http://www.office-loesung.de/ftopic520615_0_0_asc.php