J'ai une requête où je suis en train de valeurs de ligne de pivot dans les noms de colonnes et actuellement j'utilise SUM(Case...) As 'ColumnName'
déclarations, comme ceci:SQL dynamique pour générer des noms de colonnes?
SELECT
SKU1,
SUM(Case When Sku2=157 Then Quantity Else 0 End) As '157',
SUM(Case When Sku2=158 Then Quantity Else 0 End) As '158',
SUM(Case When Sku2=167 Then Quantity Else 0 End) As '167'
FROM
OrderDetailDeliveryReview
Group By
OrderShipToID,
DeliveryDate,
SKU1
La requête ci-dessus fonctionne très bien et me donne exactement ce que je dois. Cependant, je suis en train d'écrire les déclarations SUM(Case...
à la main en fonction des résultats de la requête suivante:
Select Distinct Sku2 From OrderDetailDeliveryReview
Est-il possible, en utilisant T-SQL dans une procédure stockée, que je peux générer dynamiquement les déclarations SUM(Case...
à partir de la requête Select Distinct Sku2 From OrderDetailDeliveryReview
et ensuite exécuter le code SQL résultant?
Merci pour votre réponse. J'ai vu beaucoup de réponses qui utilisent 'COALESCE', mais que fait exactement cette fonction? –
En outre, si j'essaie d'exécuter votre requête telle quelle, j'obtiens une erreur sur la ligne 15: "Syntaxe incorrecte près du mot clé" FROM "." Si je supprime la virgule à la fin de la ligne 14, j'obtiens alors un message d'erreur sur la ligne 3 * qui dit "Syntaxe incorrecte près de 'SUM'" Des idées sur ce qui se passe ici ou comment déboguer ça? –
@Cade Roux Ok, j'ai modifié le code (mettre la virgule dans les guillemets à la fin de la ligne 14, ajouter une ligne pour couper la virgule de @column_list).Maintenant ça marche, ce qui est génial, mais je n'arrive pas à comprendre ce qui se passe entre les lignes 14 et 17. –