Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Apenas uma expressão pode ser especificada na lista de seleção quando a subconsulta não é introduzida com EXISTS


Você não pode retornar duas (ou várias) colunas em sua subconsulta para fazer a comparação no WHERE A_ID IN (subquery) cláusula - qual coluna deve comparar A_ID para? Sua subconsulta deve retornar apenas a coluna necessária para a comparação com a coluna do outro lado do IN . Portanto, a consulta precisa estar no formato:
SELECT * From ThisTable WHERE ThisColumn IN (SELECT ThatColumn FROM ThatTable)

Você também deseja adicionar classificação para poder selecionar apenas nas linhas superiores, mas não precisa retornar COUNT como uma coluna para fazer sua classificação; ordenando no ORDER cláusula é independente das colunas retornadas pela consulta.

Tente algo assim:
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)