Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Une seule expression peut être spécifiée dans la liste de sélection lorsque la sous-requête n'est pas introduite avec EXISTS

Vous ne pouvez pas renvoyer deux (ou plusieurs) colonnes dans votre sous-requête pour effectuer la comparaison dans la WHERE A_ID IN (subquery) clause - quelle colonne est-elle censée comparer A_ID pour? Votre sous-requête ne doit renvoyer que la colonne nécessaire à la comparaison avec la colonne de l'autre côté du IN . La requête doit donc être de la forme :

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

Vous souhaitez également ajouter un tri afin de pouvoir sélectionner uniquement les lignes du haut, mais vous n'avez pas besoin de renvoyer le COUNT sous forme de colonne pour effectuer votre tri ; tri dans le ORDER La clause est indépendante des colonnes renvoyées par la requête.

Essayez quelque chose comme ceci :

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)