PDA

View Full Version : Gruppierungen in SQL



Seiten : [1] 2

DEVJO
20-04-10, 14:34
Moin moin,

ich habe eine Datei in der diverse Objekte sind. Jedes Objekt (Haus) kann häufiger vorkommen und ist dann mit einer Laufnummer versehen (d.h. Objekt + Laufnummer = Key).
Nun habe ich das Objekt und will die letzte Laufnummer dazu haben. Soweit kein Problem.
Nun will ich aber alle Objekte die mit A beginnen und dort nur jeweils die höchste Laufnummer, dannach dann den Satz mit B, usw.

BenderD
20-04-10, 15:08
... soll das heißen, dass bei einem der key dann Hugo1, Hugo2, ..., Hugo76, Hugo77 ist und bei einem anderen DasDarfDochNichtWahrSein1, ..., DasDarfDochNichtWahrSein104 ist und du dann Hugo77 und DasDarfDochNichtWahrSein104 haben willst?

D*B
... dann gute Nacht


Moin moin,

ich habe eine Datei in der diverse Objekte sind. Jedes Objekt (Haus) kann häufiger vorkommen und ist dann mit einer Laufnummer versehen (d.h. Objekt + Laufnummer = Key).
Nun habe ich das Objekt und will die letzte Laufnummer dazu haben. Soweit kein Problem.
Nun will ich aber alle Objekte die mit A beginnen und dort nur jeweils die höchste Laufnummer, dannach dann den Satz mit B, usw.

Spateneder
20-04-10, 18:20
Kannst Du vielleicht Feld- bzw. Spaltennamen angeben und ein Beispiel geben, wie die Daten gespeichert sind? Bis jetzt kann man nur raten, was Du meinst.
Gruß
MS (darf ich meine Initialen überhaupt benutzen?)

woki
21-04-10, 06:52
Wenn ich davon ausgehe, dass die Tabelle wie folgt aussieht:

OBJEKT LFDNR
Alpha 1
Alpha 2
Alpha 3
Beta 1
Beta 2Dann bekommst du das Ergebnis mit folgendem SQL-Statement:

select max(OBJEKT), max(LFDNR)
from MyLib/MyFile
group by substr(upper(OBJEKT), 1, 1)
MAX ( OBJEKT ) MAX ( LFDNR )
Alpha 3
Beta 2

BenderD
21-04-10, 08:23
klassischer Fall von Denkste!

Alpha 1
Alpha 2
Alpha 3
Amphore 1
Beta 1
Beta 2

liefert:
Amphore 3
Beta 1

D*B


Wenn ich davon ausgehe, dass die Tabelle wie folgt aussieht:

OBJEKT LFDNR
Alpha 1
Alpha 2
Alpha 3
Beta 1
Beta 2Dann bekommst du das Ergebnis mit folgendem SQL-Statement:

select max(OBJEKT), max(LFDNR)
from MyLib/MyFile
group by substr(upper(OBJEKT), 1, 1)
MAX ( OBJEKT ) MAX ( LFDNR )
Alpha 3
Beta 2

andreaspr@aon.at
21-04-10, 08:56
wie wärs mit:


Select Sp1, Objekt From
(select max(LFDNR) Sp1 , substring(Objekt , 1, 1) Sp2, Objekt from DIE_Table
group by Objekt) Tab1
order by tab1.sp2, tab1.sp1 desc

Spateneder
21-04-10, 09:02
Jetzt wärs wirklich mal interessant, wie die Felder tatsächlich aussehen und was PRÄZISE gesucht ist, sonst kann man noch viele Vorschläge machen.

DEVJO
21-04-10, 09:09
Hier die genaue Definition:

Ein Objekt besteht aus 3 x 3 Alpha-Feldern
LaufNr 3,0

Nun habe ich Inhalte wie folgt:

Objekt: LaufNr Beschreibung
AAA AAA AAA 1 08/15
AAA AAA AAA 2 4711
AAA AAA AAA 3 08/16
AAA AAA AAA 4 4712

BBB BBB BBB 1 Hallo
BBB BBB BBB 2 Moin moin
BBB BBB BBB 3 Salué

CCC CCC CCC 1 Horst
CCC CCC CCC 2 Bernd

usw.

Ich brauche nun einen Cursor der mir den letzten Wert gibt.
Bei AAA AAA AAA = 4712
BBB BBB BBB = Salué
CCC CCC CCC = Bernd

Da ich diesen dann ab ändern muss.

andreaspr@aon.at
21-04-10, 09:25
Hast du das schon probiert?


select sp1, sp2 from
(select max(LFDNR) sp1 , sp2 from
(select cmdnr , Alpha1 Concat Alpha2 Concat Alpha3 Sp2 from DIE_Table
) tab1
group by sp2) Tab2
order by tab2.sp2, tab2.sp1 desc

BenderD
21-04-10, 09:57
with maxobj as(
select object1, object2, object3, max(laufnr) laufnr
from tabelle
group by object1, object2, object3
)
select m.*, t.beschreibung
from maxobj m
join tabelle t
on m.object1 = t.object1
and m.object2 =t.object2
and m.0bject3 = t.object3
and m.laufnr = t.laufnr

D*B

Hier die genaue Definition:

Ein Objekt besteht aus 3 x 3 Alpha-Feldern
LaufNr 3,0

Nun habe ich Inhalte wie folgt:

Objekt: LaufNr Beschreibung
AAA AAA AAA 1 08/15
AAA AAA AAA 2 4711
AAA AAA AAA 3 08/16
AAA AAA AAA 4 4712

BBB BBB BBB 1 Hallo
BBB BBB BBB 2 Moin moin
BBB BBB BBB 3 Salué

CCC CCC CCC 1 Horst
CCC CCC CCC 2 Bernd

usw.

Ich brauche nun einen Cursor der mir den letzten Wert gibt.
Bei AAA AAA AAA = 4712
BBB BBB BBB = Salué
CCC CCC CCC = Bernd

Da ich diesen dann ab ändern muss.