sql >> Base de Datos >  >> RDS >> Sqlserver

Solo se puede especificar una expresión en la lista de selección cuando la subconsulta no se introduce con EXISTS

No puede devolver dos (o varias) columnas en su subconsulta para hacer la comparación en WHERE A_ID IN (subquery) cláusula:qué columna se supone que debe comparar A_ID ¿para? Su subconsulta solo debe devolver la columna necesaria para la comparación con la columna del otro lado de IN . Por lo tanto, la consulta debe tener la forma:

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

También desea agregar la clasificación para que pueda seleccionar solo de las filas superiores, pero no necesita devolver COUNT como una columna para ordenar; ordenar en el ORDER La cláusula es independiente de las columnas devueltas por la consulta.

Prueba algo como esto:

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)