Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

In der Auswahlliste kann nur ein Ausdruck angegeben werden, wenn die Unterabfrage nicht mit EXISTS eingeleitet wird

Sie können nicht zwei (oder mehrere) Spalten in Ihrer Unterabfrage zurückgeben, um den Vergleich in WHERE A_ID IN (subquery) durchzuführen -Klausel - welche Spalte soll A_ID vergleichen zu? Ihre Unterabfrage muss nur die eine Spalte zurückgeben, die für den Vergleich mit der Spalte auf der anderen Seite von IN benötigt wird . Die Abfrage muss also folgende Form haben:

SELECT * From ThisTable WHERE ThisColumn IN (SELECT ThatColumn FROM ThatTable)

Sie möchten auch eine Sortierung hinzufügen, damit Sie nur aus den obersten Zeilen auswählen können, aber Sie müssen die ANZAHL nicht als Spalte zurückgeben, um Ihre Sortierung durchzuführen. Sortieren in der ORDER -Klausel ist unabhängig von den von der Abfrage zurückgegebenen Spalten.

Probieren Sie so etwas aus:

select count(distinct dNum) 
from myDB.dbo.AQ 
where A_ID in
    (SELECT DISTINCT TOP (0.1) PERCENT A_ID
    FROM myDB.dbo.AQ 
    WHERE M > 1 and B = 0
    GROUP BY A_ID 
    ORDER BY COUNT(DISTINCT dNum) DESC)