Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Na liście wyboru można podać tylko jedno wyrażenie, gdy podzapytanie nie jest wprowadzone z opcją EXISTS

Nie możesz zwrócić dwóch (lub wielu) kolumn w podzapytaniu, aby dokonać porównania w WHERE A_ID IN (subquery) klauzula - z którą kolumną ma porównywać A_ID do? Twoje podzapytanie musi zwrócić tylko jedną kolumnę potrzebną do porównania z kolumną po drugiej stronie IN . Zapytanie musi więc mieć postać:

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

Chcesz również dodać sortowanie, aby móc wybierać tylko z górnych wierszy, ale nie musisz zwracać COUNT jako kolumny, aby wykonać sortowanie; sortowanie w ORDER klauzula jest niezależna od kolumn zwracanych przez zapytanie.

Wypróbuj coś takiego:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak odpytać pole DATETIME używając tylko daty w Microsoft SQL Server?

  2. Zastąp Optymalizator zapytań dla połączeń T-SQL za pomocą FORCEPLAN

  3. Napraw komunikat 8116 „Argument typ danych varchar jest nieprawidłowy dla argumentu 1 funkcji session_context” w programie SQL Server

  4. Użycie programu SQL Server sp_msforeachtable, aby wybrać tylko te tabele, które spełniają określone warunki

  5. Musisz zadeklarować zmienną skalę