Tabelle pivot con MariaDB

Mattepuffo's logo
Tabelle pivot con MariaDB

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!


Condividi

Commentami!