Em outras palavras, este erro está informando que o SQL Server não sabe qual
B
para selecionar do grupo. Ou você deseja selecionar um valor específico (por exemplo, o valor
MIN
, SUM
, ou AVG
) nesse caso você usaria a função de agregação apropriada ou deseja selecionar cada valor como uma nova linha (ou seja, incluindo B
no GROUP BY
lista de campos). Considere os seguintes dados:
ID A B 1 1 13 1 1 79 1 2 13 1 2 13 1 2 42
A pergunta
SELECT A, COUNT(B) AS T1
FROM T2
GROUP BY A
retornaria:
A T1 1 2 2 3
que é tudo bem e bom.
No entanto, considere a seguinte consulta (ilegal), que produziria esse erro:
SELECT A, COUNT(B) AS T1, B
FROM T2
GROUP BY A
E seu conjunto de dados retornado ilustrando o problema:
A T1 B 1 2 13? 79? Both 13 and 79 as separate rows? (13+79=92)? ...? 2 3 13? 42? ...?
No entanto, as duas consultas a seguir deixam isso claro e não causarão o erro:
-
Usando um agregado
SELECT A, COUNT(B) AS T1, SUM(B) AS B FROM T2 GROUP BY A
retornaria:
A T1 B 1 2 92 2 3 68
-
Adicionando a coluna aoGROUP BY
Lista
SELECT A, COUNT(B) AS T1, B FROM T2 GROUP BY A, B
retornaria:
A T1 B 1 1 13 1 1 79 2 2 13 2 1 42