Meine Abfrage lautet wie folgt und enthält eine Unterabfrage:
select count(distinct dNum)
from myDB.dbo.AQ
where A_ID in
(SELECT DISTINCT TOP (0.1) PERCENT A_ID,
COUNT(DISTINCT dNum) AS ud
FROM myDB.dbo.AQ
WHERE M > 1 and B = 0
GROUP BY A_ID ORDER BY ud DESC)
Der Fehler, den ich erhalte, ist ...
Only one expression can be specified in the select list when the subquery is not
introduced with EXISTS.`
Wenn ich die Unterabfrage alleine ausführe, wird sie einwandfrei zurückgegeben. Ich gehe also davon aus, dass ein Problem mit der Hauptabfrage vorliegt.
quelle
*
hat mir geholfen.Es beschwert sich über
innerhalb der Unterabfrage. Von der Unterabfrage kann nur eine Spalte zurückgegeben werden, es sei denn, Sie führen eine vorhandene Abfrage durch. Ich bin mir nicht sicher, warum Sie zweimal für dieselbe Spalte zählen möchten. Oberflächlich betrachtet sieht es für das, was Sie tun, überflüssig aus. Die Unterabfrage hier ist nur ein Filter , der nicht mit einem Join identisch ist. dh Sie verwenden es, um Daten einzuschränken und nicht um anzugeben, welche Spalten zurückgegeben werden sollen.
quelle
Abgesehen von sehr guten Antworten hier können Sie dies auch versuchen, wenn Sie Ihre Unterabfrage unverändert verwenden möchten.
Ansatz:
1) Wählen Sie die gewünschte Spalte (nur 1) aus Ihrer Unterabfrage aus
2) Verwenden Sie, wo der Spaltenname zugeordnet werden soll
Code:
quelle