Moje zapytanie jest następujące i zawiera w sobie podzapytanie:
select count(distinct dNum)
from myDB.dbo.AQ
where A_ID in
(SELECT DISTINCT TOP (0.1) PERCENT A_ID,
COUNT(DISTINCT dNum) AS ud
FROM myDB.dbo.AQ
WHERE M > 1 and B = 0
GROUP BY A_ID ORDER BY ud DESC)
Błąd jaki otrzymuję to ...
Only one expression can be specified in the select list when the subquery is not
introduced with EXISTS.`
Kiedy uruchamiam samo zapytanie podrzędne, zwraca się dobrze, więc zakładam, że jest jakiś problem z głównym zapytaniem?
źródło
*
pomogło mi.Narzeka
wewnątrz podzapytania. Z podzapytania można zwrócić tylko jedną kolumnę, chyba że wykonujesz zapytanie o istnienie. Nie jestem pewien, dlaczego chcesz policzyć tę samą kolumnę dwa razy, na pozór wydaje się to zbędne w stosunku do tego, co robisz. Podzapytanie tutaj jest tylko filtrem , a nie złączeniem. tzn. używasz go do ograniczania danych, a nie do określania, które kolumny mają zostać zwrócone.
źródło
Oprócz bardzo dobrych odpowiedzi tutaj, możesz spróbować również tego, jeśli chcesz użyć zapytania podrzędnego w takiej postaci, w jakiej jest.
Podejście:
1) Wybierz żądaną kolumnę (tylko 1) z zapytania podrzędnego
2) Użyj miejsca, aby zmapować nazwę kolumny
Kod:
źródło