Bạn không thể trả lại hai (hoặc nhiều) cột trong truy vấn con của mình để thực hiện so sánh trong WHERE A_ID IN (subquery)
mệnh đề - cột nào cần phải so sánh A_ID
đến? Truy vấn con của bạn chỉ phải trả về một cột cần thiết để so sánh với cột ở phía bên kia của IN
. Vì vậy, truy vấn cần phải có dạng:
SELECT * From ThisTable WHERE ThisColumn IN (SELECT ThatColumn FROM ThatTable)
Bạn cũng muốn thêm tính năng sắp xếp để có thể chỉ chọn từ các hàng trên cùng, nhưng bạn không cần trả lại COUNT dưới dạng cột để thực hiện việc sắp xếp của mình; sắp xếp trong ORDER
mệnh đề độc lập với các cột được trả về bởi truy vấn.
Hãy thử một cái gì đó như sau:
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)