Wie kann ich mehrere Spalten aus einer Unterabfrage (in SQL Server) auswählen, die für jeden Datensatz in der Hauptabfrage einen Datensatz (Top 1) haben soll?
Ich Weiß, ich kann wählen Sie eine Spalte aus einer Unterabfrage mit dieser syntax:
SELECT A.SalesOrderID, A.OrderDate,
(
SELECT TOP 1 B.Foo
FROM B
WHERE A.SalesOrderID = B.SalesOrderID
) AS FooFromB
FROM A
WHERE A.Date BETWEEN '2000-1-4' AND '2010-1-4'
Aber was ist die korrekte syntax für die Verwendung mehrerer Spalten aus einer Unterabfrage (in meinem Fall ein select top 1 Unterabfrage)? Ich danke Ihnen sehr.
InformationsquelleAutor der Frage | 2009-02-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist in der Regel, wie Sie zum auswählen mehrerer Spalten aus einer Unterabfrage:
Wenn das, was Sie letztlich versuchen, ist, die Werte aus der Zeile mit dem höchsten Wert für Foo (anstatt der max von Foo und der max von Foo2 - das ist NICHT das gleiche) dann sind die folgenden arbeiten in der Regel besser als eine Unterabfrage:
Du im Grunde sagst: gib mir die Zeile von B, wo ich nicht finden können, eine andere Zeile von B mit der gleichen SalesOrderID und eine größere Foo.
InformationsquelleAutor der Antwort Tom H
InformationsquelleAutor der Antwort SANTOSH APPANA
Müssen Sie eine Verknüpfung:
unter der Annahme, dass
b.id
ist einPRIMARY KEY
aufB
In
MS SQL 2005
und höher können Sie diese syntax verwenden:Wird diese Option genau einen Datensatz aus
B
für jedenSalesOrderId
.InformationsquelleAutor der Antwort Quassnoi
InformationsquelleAutor der Antwort Alexander Lebedev