GROUP BY mit SET ENGINEBEHAVIOR 90

10/10/2007 - 11:42 von Lutz Schorm | Report spam
Hallo NG!

Ich stehe gerade etwas auf dem Schlauch:
Ich suche jeweils den neuesten Datensatz zu einem bestimmten Vorgang.

CREATE CURSOR test ( parent_id N (10), Datum D , Inhalt C (10) )
INSERT INTO test VALUES ( 1001, {01.01.1990} , "abc123")
INSERT INTO test VALUES ( 1001, {03.03.1990} , "xyz222") <==INSERT INTO test VALUES ( 1001, {02.02.1990} , "bbbccc")
INSERT INTO test VALUES ( 1002, {01.01.1991} , "2bc123")
INSERT INTO test VALUES ( 1002, {02.02.1991} , "b33ccc")
INSERT INTO test VALUES ( 1002, {03.03.1991} , "aaaddd") <==
Mit ENGINEBEHAVIOR 70 war das für mich kein Problem:
SELE * FROM test ORDER BY datum DESC GROUP BY parent_id

Wie muss nun die Abfrage lauten, wenn ich dies mit einem
'saubern' SQL-Statement realisieren möchte?
Ich brauche es deshalb, da die Abfrage künfig auf einem
Firebird Server laufen muss,


Viele Grüße

Lutz
 

Lesen sie die antworten

#1 Winfried Wolf
10/10/2007 - 12:10 | Warnen spam
Lutz Schorm schrieb:
Hallo NG!

Ich stehe gerade etwas auf dem Schlauch:
Ich suche jeweils den neuesten Datensatz zu einem bestimmten Vorgang.

CREATE CURSOR test ( parent_id N (10), Datum D , Inhalt C (10) )
INSERT INTO test VALUES ( 1001, {01.01.1990} , "abc123")
INSERT INTO test VALUES ( 1001, {03.03.1990} , "xyz222") <==> INSERT INTO test VALUES ( 1001, {02.02.1990} , "bbbccc")
INSERT INTO test VALUES ( 1002, {01.01.1991} , "2bc123")
INSERT INTO test VALUES ( 1002, {02.02.1991} , "b33ccc")
INSERT INTO test VALUES ( 1002, {03.03.1991} , "aaaddd") <==>
Mit ENGINEBEHAVIOR 70 war das für mich kein Problem:
SELE * FROM test ORDER BY datum DESC GROUP BY parent_id

Wie muss nun die Abfrage lauten, wenn ich dies mit einem
'saubern' SQL-Statement realisieren möchte?
Ich brauche es deshalb, da die Abfrage künfig auf einem
Firebird Server laufen muss,





in GROUP setzt Du alle Felder, die nicht von der Gruppierung abhàngen,
also kein SUM(), MAX() etc enthalten, sondern die Gruppe selber
ausmachen. In Deinem Fall also alle. Oder besser noch, Du làsst es ganz
weg, da ja in Deinem Fall jede Gruppe dann sowieso nur eine Zeile enthàlt.

Gruß,
WiWo.

Ähnliche fragen