Girar una tabla en SQL Server
En este artículo se describe cómo rotar una tabla en SQL Server.
Versión del producto original: SQL Server
Número de KB original: 175574
Resumen
En este artículo se describe cómo rotar una tabla de SQL Server. Supongamos que tiene una tabla denominada QTRSALES
. La tabla tiene las columnas YEAR
, QUARTER
y AMOUNT
con los datos en el siguiente formato.
Nota:
No hay ninguna fila para el cuarto trimestre de 1996:
Año | Trimestre | Amount |
---|---|---|
1995 | 1 | 125,000.90 |
1995 | 2 | 136,000.75 |
1995 | 3 | 212,000.34 |
1995 | 4 | 328,000.82 |
1996 | 3 | 728,000.35 |
1996 | 2 | 422,000.13 |
1996 | 1 | 328,000.82 |
Ahora, supongamos que desea rotar la tabla para que pueda ver los datos en el formato siguiente:
YEAR | Q1 | Q2 | Q3 | Q4 |
---|---|---|---|---|
1995 | 125,000.90 | 136,000.75 | 212,000.34 | 328,000.82 |
1996 | 328,000.82 | 422,000.13 | 728,000.35 | 0.00 |
La consulta que usaría para girar la tabla se encuentra en la sección siguiente de este artículo.
Consulta de ejemplo para girar la tabla
Esta es la consulta que usaría para girar la tabla:
SELECT YEAR,
Q1= ISNULL((SELECT AMOUNT FROM QTRSALES WHERE QUARTER = 1 AND YEAR =
Q.YEAR),0),
Q2= ISNULL((SELECT AMOUNT FROM QTRSALES WHERE QUARTER = 2 AND YEAR =
Q.YEAR),0),
Q3= ISNULL((SELECT AMOUNT FROM QTRSALES WHERE QUARTER = 3 AND YEAR =
Q.YEAR),0),
Q4= ISNULL((SELECT AMOUNT FROM QTRSALES WHERE QUARTER = 4 AND YEAR =
Q.YEAR),0)
FROM QTRSALES Q
GROUP BY YEAR
Consulta de tablas grandes
En el caso de las tablas grandes, esta consulta será más rápida:
SELECT YEAR,
SUM(CASE quarter WHEN 1 THEN amount ELSE 0 END) AS Q1,
SUM(CASE quarter WHEN 2 THEN amount ELSE 0 END) AS Q2,
SUM(CASE quarter WHEN 3 THEN amount ELSE 0 END) AS Q3,
SUM(CASE quarter WHEN 4 THEN amount ELSE 0 END) AS Q4
FROM qtrsales q
GROUP BY YEAR
Referencia
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de