PIVOT SU SQL L’argomento è risolto

SQL Server, Oracle, MySQL...
Rispondi
Avatar utente

Alieno86
Messaggi: 47 | Topic creati
Iscritto il: mer 9 giu 2021, 16:36
Ringraziato: 5 volte

PIVOT SU SQL

Messaggio 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?


Avatar utente

Enrico Galli
Messaggi: 890 | Topic creati
Iscritto il: dom 28 giu 2020, 19:03
Luogo: San Giovanni in Persiceto (BO)
Ringraziato: 325 volte
Contatta:

PIVOT SU SQL

Messaggio 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/
Enrico Galli
Link utili: I nostri tutorial | Come inserire: Immagini - Codice - Risolto
Se il forum ti è stato utile, considera di supportarlo con una libera donazione
Avatar utente

Autore del topic
Alieno86
Messaggi: 47 | Topic creati
Iscritto il: mer 9 giu 2021, 16:36
Ringraziato: 5 volte

PIVOT SU SQL

Messaggio da Alieno86 »

Grazie mille, mi riservo di studiarlo e implementarlo, poi se cosa gradita metterò il codice della query completa.

Saluti
Rispondi