Ich habe eine Tabelle, die drei Felder wie folgt hat:Erhalten Sie Datensätze mit max Summenwert von gruppierten SQL führt
PK account value
-----------------------
1 40010101 130
1 40010101 500
1 40010569 590
2 40010569 300
2 40010101 200
ich die Platte auswählen mag, die für jeden PK höchsten Wert der Summe des Wertes hat, gruppiert nach PK und Konto, so sollte mein Ergebnis so aussehen:
PK account value
-----------------------
1 40010101 630
2 40010569 300
ich diese Lösung versucht:
SELECT
pn.*
FROM
(select PK, account, sum(value) as value
from table
group by PK, account) pn
INNER JOIN
(select PK, MAX(value) AS maxvalue
from (select PK, account, sum(value) as value
from table
group by PK, account) pn
group by PK) maxsum
ON pn.PK= maxsum.PK
AND pn.value = maxsum.maxvalue
Es funktioniert, aber ich frage Sie eine schnellere Lösung. Ich könnte tausend Datensätze haben, die passen würden. Ich kann keine gespeicherte Prozedur verwenden. Verwenden von SQL Server.
Verwenden Sie MySQL oder SQL Server? Kannst du angemessen taggen? –
@Kason Sie haben seine Frage verwechselt. – Blank
Wenn Sie den Link sqlfiddle.com für diese Art von Frage bereitstellen, hilft dies uns, schneller und genauer zu lösen. –