Ruotare una tabella in SQL Server
Questo articolo descrive come ruotare una tabella in SQL Server.
Versione originale del prodotto: SQL Server
Numero KB originale: 175574
Riepilogo
Questo articolo descrive come ruotare una tabella SQL Server. Si supponga di avere una tabella denominata QTRSALES
. La tabella include le colonne YEAR
, QUARTER
e AMOUNT
con i dati nel formato seguente.
Nota
Non esiste alcuna riga per il quarto trimestre del 1996:
Anno | Quarto | Quantità |
---|---|---|
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 |
Si supponga ora di voler ruotare la tabella in modo da poter visualizzare i dati nel formato seguente:
ANNO | 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 query da usare per ruotare la tabella è disponibile nella sezione successiva di questo articolo.
Query di esempio per ruotare la tabella
Ecco la query che si userebbe per ruotare la tabella:
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
Query per tabelle di grandi dimensioni
Per le tabelle di grandi dimensioni, questa query sarà più veloce:
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
Riferimento
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per