Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

È possibile specificare una sola espressione nell'elenco di selezione quando la sottoquery non viene introdotta con EXISTS

Non puoi restituire due (o più) colonne nella tua sottoquery per eseguire il confronto in WHERE A_ID IN (subquery) clausola - quale colonna dovrebbe confrontare A_ID a? La tua sottoquery deve restituire solo una colonna necessaria per il confronto con la colonna sull'altro lato di IN . Quindi la query deve essere della forma:

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

Vuoi anche aggiungere l'ordinamento in modo da poter selezionare solo dalle righe in alto, ma non è necessario restituire COUNT come colonna per eseguire l'ordinamento; ordinamento nel ORDER La clausola è indipendente dalle colonne restituite dalla query.

Prova qualcosa del genere:

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)