Columna "no válida en la lista de selección porque no está contenida ni en una función agregada ni en la cláusula GROUP BY"
Me gustaría mostrar la columna B
en mi siguiente SQL, pero cuando la agrego a la consulta me da el siguiente error:
La columna T2.B' no es válida en la lista de selección porque no está contenida ni en una función agregada ni en la cláusula GROUP BY.
Mi código:
SELECT A, COUNT(B) as T1, B
FROM T2
WHERE ID=1
GROUP BY A
En otras palabras, este error le indica que SQL Server no sabe cuál B
seleccionar del grupo.
O desea seleccionar un valor específico (por ejemplo MIN
, SUM
, o AVG
), en cuyo caso usaría la función agregada adecuada, o desea seleccionar cada valor como una nueva fila (es decir, incluirlo B
en la GROUP BY
lista de campos).
Considere los siguientes datos:
ID AB 1 1 13 1 1 79 1 2 13 1 2 13 1 2 42
La consulta
SELECT A, COUNT(B) AS T1
FROM T2
GROUP BY A
volvería:
A LA 1 1 2 2 3
Esto es bueno y fabuloso.
Sin embargo, considere la siguiente consulta (ilegal), que produciría este error:
SELECT A, COUNT(B) AS T1, B
FROM T2
GROUP BY A
Y su conjunto de datos devueltos que ilustran el problema:
Una T1 B 1 2 13? 79? ¿Tanto 13 como 79 como filas separadas? (13+79=92)? ...? 2 3 13? 42? ...?
Sin embargo, las dos consultas siguientes aclaran esto y no provocarán el error:
Usando un agregado
SELECT A, COUNT(B) AS T1, SUM(B) AS B FROM T2 GROUP BY A
volvería:
Una T1 B 1 2 92 2 3 68
Agregar la columna a la
GROUP BY
listaSELECT A, COUNT(B) AS T1, B FROM T2 GROUP BY A, B
volvería:
Una T1 B 1 1 13 1 1 79 2 2 13 2 1 42
Agregue una columna en el grupo como se muestra a continuación:
SELECT A, COUNT(B) as T1, B
FROM T2
WHERE ID=1
GROUP BY A,B