Pagina 1 di 1

PIVOT SU SQL

Inviato: lun 23 mag 2022, 12:57
da Alieno86
Buongiorno,
ho appena appreso il comodissimo costrutto relazionare pivot su SQL, vi chiedo se c'è la possibilità di rendere dinamica la creazione delle colonne inserite a mano su FOR.

Codice: Seleziona tutto

SELECT* FROM(
SELECT [2022].[COD_VOCE],[2022].[DESCRIZIONE],[FONDO_DIR],[TIPOLOGIA_DIR_SAN],[ANNO_RIFERIM],[ANNO_CEDOLINO],[IMPORTO]
  FROM [AOB].[dbo].[2022]
  right join [dbo].[FONDI_DIR]
  on [AOB].[dbo].[2022].[COD_VOCE]=[dbo].[FONDI_DIR].[COD_VOCE]
  where [DESC_TIPODIP]IN('Dir. delle Profess. Sanitarie','Dirig.Sanitaria non medica','Dirig.Medico/Veterinaria'))
 AS SOURCEtable
 PIVOT(
 SUM([IMPORTO])
 FOR ANNO_RIFERIM IN (
[2022],
[2021],
[2020],
[2019],
[2018],
[2017],
[2016]))
AS PIVOT_TABLE
io vorrei che le colonne si generassero da un disticnt(anno_riferim) ma non riesco ad implementarlo, qualche consiglio?

PIVOT SU SQL

Inviato: mar 24 mag 2022, 6:55
da Enrico Galli
Ciao. Per fare quello che chiedi, devi salvare la lista di anni in una variabile, che poi utilizzerai nella tua select. Dovrai quindi eseguire una stored procedure, sp_executesql, utilizzando la query dinamica che avrai costruito, come ti mostra qui nell'ultimo esempio:

https://www.sqlservertutorial.net/sql-s ... ver-pivot/

PIVOT SU SQL

Inviato: mer 25 mag 2022, 11:12
da Alieno86
Grazie mille, mi riservo di studiarlo e implementarlo, poi se cosa gradita metterò il codice della query completa.

Saluti