Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Query pivot dinamiche senza memorizzare la query come stringa

Risposta breve: no.

Risposta lunga:

Bene, è ancora no . Ma cercherò di spiegare perché. Ad oggi, quando si esegue la query, il motore DB richiede di essere a conoscenza della struttura del set di risultati (numero di colonne, nomi di colonne, tipi di dati, ecc.) che la query restituirà. Pertanto, è necessario definire la struttura del set di risultati quando si chiedono dati al DB. Pensaci:hai mai eseguito una query in cui non avresti saputo in anticipo la struttura del set di risultati?

Ciò vale anche quando select * , che è solo una sintassi di zucchero. Alla fine, la struttura di ritorno è "tutte le colonne in tali tabelle".

Assemblando una stringa, generi dinamicamente la struttura che desideri, prima di chiedere il set di risultati. Ecco perché funziona.

Infine, dovresti essere consapevole del fatto che l'assemblaggio dinamico della stringa può teoricamente e potenzialmente (sebbene non probabile) ottieni un set di risultati con colonne infinite. Certo, non è possibile e fallirà, ma sono sicuro che hai capito le implicazioni.

Aggiorna

Ho trovato questo, che rafforza i motivi per cui non funziona.

Qui :

Continuerò a cercare e ad aggiungere qui.