Jinými slovy, tato chyba vám říká, že SQL Server neví který B
pro výběr ze skupiny.
Buď chcete vybrat jednu konkrétní hodnotu (např. MIN
, SUM
nebo AVG
), v takovém případě byste použili příslušnou agregační funkci nebo chcete každou hodnotu vybrat jako nový řádek (tj. včetně B
v GROUP BY
seznam polí).
Zvažte následující údaje:
ID A B 1 1 13 1 1 79 1 2 13 1 2 13 1 2 42
Dotaz
SELECT A, COUNT(B) AS T1
FROM T2
GROUP BY A
by se vrátilo:
A T1 1 2 2 3
což je všechno dobré a dobré.
Zvažte však následující (nelegální) dotaz, který by způsobil tuto chybu:
SELECT A, COUNT(B) AS T1, B
FROM T2
GROUP BY A
A jeho vrácená datová sada ilustrující problém:
A T1 B 1 2 13? 79? Both 13 and 79 as separate rows? (13+79=92)? ...? 2 3 13? 42? ...?
Následující dva dotazy to však objasňují a nezpůsobí chybu:
-
Pomocí agregátu
SELECT A, COUNT(B) AS T1, SUM(B) AS B FROM T2 GROUP BY A
by se vrátilo:
A T1 B 1 2 92 2 3 68
-
Přidání sloupce do
GROUP BY
seznamSELECT A, COUNT(B) AS T1, B FROM T2 GROUP BY A, B
by se vrátilo:
A T1 B 1 1 13 1 1 79 2 2 13 2 1 42