Ein Kollege dieses Stück SQL geschrieben zu verwenden (SQL Server 2012):Suche nach einem Minimalwert in einer Unterabfrage
SELECT
a.account_id
,(SELECT SUM(e.amount)
FROM event e
WHERE e.event_type_id <> 47
AND e.master_comm_id = (SELECT c.comm_id
FROM comm c
WHERE c.item_id = a.item_id
AND c.comp_type_id = 20
AND c.comm_type_id = 485))
FROM account a
Allerdings gibt es Fälle, in denen es mehr master_comm_ids gegen ein Ereignis sind, und so die Abfrage fehlgeschlagen (Unterabfrage hat mehr als 1 Wert zurückgegeben. Dies ist nicht zulässig, wenn die Unterabfrage =,! =, <, < =,>,> = oder wenn die Unterabfrage als Ausdruck verwendet wird.). Ich möchte nur die erste master_comm_id, dh. die MIN eins.
Ich habe verschiedene ähnliche Fragen untersucht und verschiedene Dinge versucht, um dies zu erreichen (mit MIN oder ROW_NUMBER und Neuanordnung der Abfrage Joins zu verwenden), aber ich muss etwas Offensichtliches vermissen, da alles entweder zu SQL-Fehlern oder dem Falschen geführt hat Daten oder nicht das Problem behoben.
Kann mir jemand helfen, finde die min master_comm_id, um sie dann in der Unterabfrage zu verwenden?
Bitte Tabellenstrukturen und einige Beispieldaten veröffentlichen. – RichardCL
Der beste Weg, hier nützliche Ratschläge zu erhalten, besteht darin, Ihre Tabellenstrukturen, einige minimale Beispieldaten, die das Problem veranschaulichen, und Ihr erwartetes Ergebnis einzubeziehen. Bitte lesen Sie: http://stackoverflow.com/help/how-to-ask –
Warum würde 'ORDERBY' nicht funktionieren? –