Tabelle pivot con MariaDB
Quando si parla di database e query, per tabelle pivot si intende traslare i dati ed incolonnarli in maniera differente dallo standard della tabella.
In pratica, facendo un esempio reale, ho questa query:
SELECT
IF (mov_tipo = "E", "ENTATE", "USCITE") tipo, YEAR(mov_data) anno,
SUM(mov_valore) sum_val
FROM movimenti
WHERE mov_utente_fk = 1
GROUP BY tipo, anno
ORDER BY anno DESC, tipo
Che mi restituisce i dati in maniera simile a questa:
tipo | anno | sum_val |
---|---|---|
ENTATE | 2017 | 100 |
USCITE | 2017 | -50 |
ENTATE | 2016 | 120 |
USCITE | 2016 | -70 |
Quello che mi serve è visualizzare i dati in questa maniera:
anno entrate uscite
2017 100 -50
2016 120 -70
Come vedete ho traslato le colonne e le righe.
Per arrivare a questo risultato, ho modificato la query come segue:
SELECT
YEAR(mov_data) anno,
SUM(IF(mov_tipo = "E", mov_valore, 0)) AS sum_entrate,
SUM(IF(mov_tipo = "U", mov_valore, 0)) AS sum_uscite
FROM movimenti
WHERE mov_utente_fk = 1
GROUP BY anno
ORDER BY anno DESC, mov_tipo
Ovviamente per "pivottizzare" i dati, ci stanno diverse modalità; questa è una delle probabili tante.
Specifico, inoltre, che siamo su un db MariaDB (vale anche per MySQL); su altri db la sintassi potrebbe cambiare.
Enjoy!
database mariadb mysql pivot
Commentami!