¿hay una forma de agrupar y todavía mostrar otras variables sin infringir cláusula de no-agregado

John G:

Mesa:

id | value
---+-----------
 1 | Monday 
 2 | Tuesday 
 3 | Tuesday 
 4 | Wednesday

Necesito que se muestre como:

value     | count | id1 | id2 
----------+-------+-----+-----
Monday    |  1    |  1  |
Tuesday   |  2    |  2  |  3 
Wednesday |  1    |  4  |

Pero el uso de la Group Byfunción no funcionará por razones obvias ( "id" no está contenido ni en la función de agregado o de la GROUP BYcláusula).

Sin embargo, todavía tengo este hecho y he agotado mi conocimiento de malabarismos con las variables en tablas temporales. Necesita esto en SSMS, Cualquier ayuda se agradece, gracias.

Gordon Linoff:

Lo que desea la agregación de cadenas. Aquí es un método típico:

select value, count(*), string_agg(id, ',') as ids
from t
group by value;

Si desea que los valores de dos columnas, se puede utilizar MIN()y MAX():

select value, count(*),
       min(id) as id1, coalesce(max(id), min(id)) as id2
from t
group by value;

Supongo que te gusta

Origin http://10.200.1.11:23101/article/api/json?id=399742&siteId=1
Recomendado
Clasificación