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 By
función no funcionará por razones obvias ( "id" no está contenido ni en la función de agregado o de la GROUP BY
clá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;