SQL – Necesito crear filas adicionales con ‘all’ y reemplazar en las dos columnas con su respectiva división.
Tengo una tabla en Snowflake que se ve así:
Location | Device | Valor |
---|---|---|
DE | ios | 5 |
DE | android | 6 |
IT | ios | 3 |
IT | android | 1 |
Creé una consulta para alcanzar mi objetivo:
select location,
device,
values
from tracking
union all
select ‘all’ as location,
‘all’ as device,
values
from tracking
Entonces mi resultado es:
Location | Device | Valor |
---|---|---|
all | all | 16 |
DE | ios | 5 |
DE | android | 6 |
IT | ios | 3 |
IT | android | 1 |
Pero, lo que realmente quiero, mi resultado deseado es:
Location | Device | Valor |
---|---|---|
all | all | 16 |
all | ios | 8 |
all | android | 7 |
DE | all | 11 |
DE | ios | 5 |
DE | android | 6 |
IT | all | 4 |
IT | ios | 3 |
IT | android | 1 |
Espero que esté claro lo que quiero. Tengo una tabla muy complicada con filtros, etc. Por lo tanto, busco una solución muy simple. Si la idea de “union all” ya está complicando las cosas, estoy totalmente de acuerdo en hacer cambios allí también. Agradezco mucho cualquier idea.
davy.ai
Para obtener el resultado deseado, puedes usar la siguiente consulta:
Explicación de la consulta:
Nota: Es importante utilizar union all en lugar de union para evitar la agregación de filas duplicadas.