Pivot con colonne generate dinamicamente

di VashTheStampede2023 il
4 risposte

Ciao a tutti,

per uno sviluppo interno ho generato una query con pivot. Nel tentativo di generare dinamicamente le colonne ho creato una stored procedure dedicata che mi estrapola dalla tabella i valori che devono diventare colonne. Il problema è che quando provo ad eseguire la query SQL Server segnala l'errore

Sintassi non corretta in prossimità della parola chiave 'EXEC'

Questa è la parte di query dove riscontro l'errore

PIVOT (
                    MAX(immagineSmaltimento) FOR descrizioneSmaltimento IN
                    (EXEC materiali)
                    ) AS PivotTable

se eseguo la stored pocedure ottengo i valori regolarmente.

C'è un modo per far eseguire la mia stored procedure o in alternativa c'è un modo migliore per ottenere il risultato?

4 Risposte

  • Salve,

    non puoi usare la chiamata ad un “EXEC” innestata in una proiezione….

    personalmente ti consiglio di vedere soluzioni collaudate come quella del grandissimo Itzik Ben Gan, amico, genio matematico e eccezionale SQL coder, oltre che trainer e troubleshooter internazionale… vedi ad esempio https://www.itprotoday.com/sql-server/pivot-steroids

    i suoi libri sono sempre fonte di spunti eccellenti….

    salutoni romagnoli
    – 
    Andrea

  • Grazie per la risposta. Io sto utilizzando SQL Server 2019 ma non ho la stored procedure sp_pivot citata nell'articolo che mi hai linkato.

  • 31/10/2023 - VashTheStampede2023 ha scritto:


    Grazie per la risposta. Io sto utilizzando SQL Server 2019 ma non ho la stored procedure sp_pivot citata nell'articolo che mi hai linkato.

    L'articolo va letto dall'inizio. Primo paragrafo dopo l'introduzione:

    «The sp_pivot stored procedure delivers powerful, dynamic pivoting logic. Run the code in Listing 1, to create sp_pivot in the master database.»

    Unico problema: il link che porta al “Listing 1” non funziona più.

  • Salve a tutti…

    eh…. sono articoli un po' datati e pare che SQL Server Magazine non ci sia neanche piu'??  :(((

    comunque anche il grande Erland (Sommarskog), altro personaggissimo di spicco e punta di diamante SQL Server ha giocato con le idee di Itzikk, e il suo lavoro e' ancora disponibile… https://www.sommarskog.se/dynamic_sql.html

    e c'e' anche tutto il bonus del suo documento sul “curse & blessing” del dynamic sql…

    salutoni romagnoli
    – 
    Andrea

Devi accedere o registrarti per scrivere nel forum
4 risposte