MiMarkow
29-03-17, 11:32
Hallo zusammen,
ich möchte über eine SQL-Abfrage eine neue Ausgabe erzeugen welche am Ende pro Kunde immer nur einen und zwar den letzten aktuellen Satz ausgeben soll - ich habe jedoch noch keine Möglichkeit gefunden, diese per SQL zu lösen.
Im folgenden Beispiel sind die beiden Dateien 1+2 mittels eines INNER JOIN miteinander verknüpft -
SELECT
-- Spalten
A.KDNR AS KONTO,
MAX(CAST(SUBSTR(B.GEJA, 1, 4) AS DECIMAL)) AS JAHR,
B.EIWT AS WERT
-- Tabellen
FROM "DATEI1" A
Inner Join "DATEI2" B ON A.KDNR = B.KDNR
-- Zeilenauswahl
WHERE ((A.KZAB = 3))
-- Sortierspalten
GROUP BY A.KDNR, B.GEJA, B.EIWT
-- Sortierspalten
ORDER BY A.KDNR, B.GEJA DESC
KONTO JAHR WERT
----- ------- ---------------
60001 2.014 57.677,00 < z.B.
60004 1.996 4.729,45 < z.B.
60004 1.995 9.458,90
60004 1.994 4.729,45
60005 2.013 2.275,00 < z.B.
60005 2.011 43.650,00
60005 2.010 37.680,00
60005 2.009 27.840,00
60006 2.009 100.260,00 < z.B.
60006 2.008 259.596,00
60006 2.007 133.056,00
60006 2.006 128.160,00
60006 2.005 62.784,00
60006 2.003 40.813,00
ich benötige aus Datei2 immer nur den Satz mit der letzten/neuesten Jahreszeile, funktioniert also nicht?!
Im 2ten Beispiel sind die beiden Dateien 1+2 mittels eines RIGHT OUTER JOIN miteinander verknüpft -
SELECT
-- Spalten
A.KDNR AS KONTO,
MAX(CAST(SUBSTR(B.GEJA, 1, 4) AS DECIMAL)) AS JAHR,
SUM(B.EIWT) AS WERT
-- Tabellen
FROM "DATEI1" A
Right Outer Join "DATEI2" B ON A.KDNR = B.KDNR
-- Zeilenauswahl
WHERE ((A.KZAB = 3))
-- Sortierspalten
GROUP BY A.KDNR
-- Sortierspalten
ORDER BY A.KDNR, B.GEJA DESC
KONTO JAHR WERT
----- ------- -------------------
60001 2.014 57.677,00
60004 1.996 18.917,80
60005 2.013 292.890,89
60006 2.009 1.007.442,17
hier stimmen zwar die letzten/neuesten Zeilen mit der Jahreszahl, die Werte stimmen jedoch nicht, da diesse aufsummiert werden!!
Was und wie kann ich nun vorgehen damit ich zu meinem gewünschten Resultat gelange - nun möchte ich euch hier um eure Hilfe bitten - VIELEN DANK im voraus!!
Liebe Grüße
MiMarkow
ich möchte über eine SQL-Abfrage eine neue Ausgabe erzeugen welche am Ende pro Kunde immer nur einen und zwar den letzten aktuellen Satz ausgeben soll - ich habe jedoch noch keine Möglichkeit gefunden, diese per SQL zu lösen.
Im folgenden Beispiel sind die beiden Dateien 1+2 mittels eines INNER JOIN miteinander verknüpft -
SELECT
-- Spalten
A.KDNR AS KONTO,
MAX(CAST(SUBSTR(B.GEJA, 1, 4) AS DECIMAL)) AS JAHR,
B.EIWT AS WERT
-- Tabellen
FROM "DATEI1" A
Inner Join "DATEI2" B ON A.KDNR = B.KDNR
-- Zeilenauswahl
WHERE ((A.KZAB = 3))
-- Sortierspalten
GROUP BY A.KDNR, B.GEJA, B.EIWT
-- Sortierspalten
ORDER BY A.KDNR, B.GEJA DESC
KONTO JAHR WERT
----- ------- ---------------
60001 2.014 57.677,00 < z.B.
60004 1.996 4.729,45 < z.B.
60004 1.995 9.458,90
60004 1.994 4.729,45
60005 2.013 2.275,00 < z.B.
60005 2.011 43.650,00
60005 2.010 37.680,00
60005 2.009 27.840,00
60006 2.009 100.260,00 < z.B.
60006 2.008 259.596,00
60006 2.007 133.056,00
60006 2.006 128.160,00
60006 2.005 62.784,00
60006 2.003 40.813,00
ich benötige aus Datei2 immer nur den Satz mit der letzten/neuesten Jahreszeile, funktioniert also nicht?!
Im 2ten Beispiel sind die beiden Dateien 1+2 mittels eines RIGHT OUTER JOIN miteinander verknüpft -
SELECT
-- Spalten
A.KDNR AS KONTO,
MAX(CAST(SUBSTR(B.GEJA, 1, 4) AS DECIMAL)) AS JAHR,
SUM(B.EIWT) AS WERT
-- Tabellen
FROM "DATEI1" A
Right Outer Join "DATEI2" B ON A.KDNR = B.KDNR
-- Zeilenauswahl
WHERE ((A.KZAB = 3))
-- Sortierspalten
GROUP BY A.KDNR
-- Sortierspalten
ORDER BY A.KDNR, B.GEJA DESC
KONTO JAHR WERT
----- ------- -------------------
60001 2.014 57.677,00
60004 1.996 18.917,80
60005 2.013 292.890,89
60006 2.009 1.007.442,17
hier stimmen zwar die letzten/neuesten Zeilen mit der Jahreszahl, die Werte stimmen jedoch nicht, da diesse aufsummiert werden!!
Was und wie kann ich nun vorgehen damit ich zu meinem gewünschten Resultat gelange - nun möchte ich euch hier um eure Hilfe bitten - VIELEN DANK im voraus!!
Liebe Grüße
MiMarkow