Datensatz mit gruppierten Max-Wert einer Spalte wählen

kraeppus

Benutzer
Beiträge
10
moin zusammen :)

ich steh gerade auf dem schlauch...
ausschnitt aus einer Tabelle:
snr|znr|txt |gruppe
4 |1 |35d |1
4 |1 |35d Blindstrom BEV |0
4 |2 |35e |1
4 |2 |35e Blindstrom BEV |0
4 |3 |21a |1
4 |3 |21d |2
4 |3 |21d Wirkstrom BEV 2162 |0
4 |4 |21b |1
4 |4 |21e |4
4 |4 |21e Wirkstrom BEV 2172 |0

für jede snr-znr-Kombination brauche ich die maximale gruppe sowie den dazu passenden text.
Ergebnis soll sein:

4 |1 |35d |1
4 |2 |35e |1
4 |3 |21d |2
4 |4 |21e |4

ohne die spalte txt funktioniert die abfrage :

select snr, znr, MAX(gruppe) as maxGruppe
from Zaehlerstamm
where snr = '4'
group by snr, znr
order by znr.

die texte sind unterschiedlich, deshalb funzt das net, ist mir zwar klar, aber ich hab grad einfach kein plan, wie ich den text dazu kriege -.-

kann mir da jemand auf die sprünge helfen?

lg und schönen tag :)
 
Werbung:
mit nem join hab ich es bereits versucht; meine Idee war:

select z1.snr, z1.znr, MAX(z1.gruppe) as maxGruppe, z2.txt
from Zaehlerstamm z1
inner join Zaehlerstamm z2 on (z1.snr = z2.snr and z1.znr = z2.znr and z1.gruppe = z2.gruppe)
where z1.snr = '4'
group by z1.snr, z1.znr, z2.txt
order by znr


hier habe ich mir erhofft, dass durch den select eben die tabelle zustande kommt, wo ich meinte "ohne die spalte txt funktioniert es" zustande kommt und durch den join der text genommen wird. aber fehlgeschlagen :/
 
In etwa so:
Code:
SELECT    t1.snr,
        t1.znr,
        t1.maxGruppe,
        t2.txt
FROM (
select snr, znr, MAX(gruppe) as maxGruppe
from Zaehlerstamm
where snr = '4'
group by snr, znr
        ) t1
LEFT JOIN Zaehlerstamm t2
ON        t1.snr = t2.snr
AND        t1.znr = t2.znr
AND        t1.maxGruppe = t2.gruppe
ORDER BY t1.znr
Sieht etwas kompliziert aus, ist es aber eigentlich nicht. Auf die originäre Abfrage wird eigentlich nur eine weitere Spalte gejoint.
 
Werbung:
Zurück
Oben