116: Nur ein einziger Ausdruck kann in der Auswahlliste angegeben werden
Fehlermeldung:
Meldung 116, Ebene 16, Status 1, Zeile 2
Nur ein einziger Ausdruck kann in der Auswahlliste angegeben werden, wenn die Unterabfrage nicht mit EXISTS eingeleitet wird.
Ebene:
16.
Beschreibung:
Diese Fehlermeldung taucht auf, wenn eine Subquery mehr als einen Ausdruck in der SELECT Liste ausweist
Auswirkungen:
Das SQL Statement kann zwar geparst werden, jedoch zur Laufzeit wird der Fehler ausgelöst.
Behebung:
Fehler der Ebene 16 sind Fehler, die vom Anwender hervorgerufen werden. Sie können und müssen vom Anwender korrigiert werden. Aus der SELECT Liste der Subquery müssen alle bis auf einen Ausdruck entfernt werden.
Versionen:
Alle Versionen von SQL Server.
Beispiele:
USE Northwind
SELECT t1.*
FROM dbo.Orders t1
WHERE t1.OrderDate =
(SELECT MAX(OrderDate), CustomerID
FROM dbo.Orders
WHERE t1.CustomerID = CustomerID
GROUP BY CustomerID)
Anmerkungen:
Im obigen Beispiel wird versucht, die Orderdaten zur letzten Bestellung für jeden zu selektieren. Die Korrelation der Subquery zum äußeren SELECT wird dabei über t1.CustomerID = CustomerID hergestellt. Da in der SELECT Liste der Subquery mehr als ein Ausdruck angegeben ist (MAX(OrderDate), CustomerID), wird der Fehler ausgelöst. Um aus dieser Abfrage das gewünschte Ergebnis zu erhalten, muß man die Abfrage folgendermaßen umformulieren:
USE Northwind
SELECT t1.*
FROM dbo.Orders t1
WHERE t1.OrderDate =
(SELECT MAX(OrderDate)
FROM dbo.Orders
WHERE t1.CustomerID = CustomerID)