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

Kun ét udtryk kan angives i valglisten, når underforespørgslen ikke er introduceret med EXISTS

Du kan ikke returnere to (eller flere) kolonner i din underforespørgsel for at udføre sammenligningen i WHERE A_ID IN (subquery) klausul - hvilken kolonne skal den sammenligne A_ID til? Din underforespørgsel må kun returnere den ene kolonne, der er nødvendig for sammenligningen med kolonnen på den anden side af IN . Så forespørgslen skal have formen:

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

Du vil også tilføje sortering, så du kun kan vælge fra de øverste rækker, men du behøver ikke at returnere COUNT som en kolonne for at udføre din sortering; sortering i ORDER klausulen er uafhængig af de kolonner, der returneres af forespørgslen.

Prøv noget som dette:

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)


  1. Sådan bruges FILEGROUPPROPERTY() i SQL Server

  2. Sådan opretter du tabel med identitetskolonne

  3. Hvordan medtager man nul/0 resultater i COUNT aggregat?

  4. 2 måder at liste alle tabelværdierede funktioner i en SQL Server-database