J'ai un PIVOT dynamique qui fonctionne partiellement. Cela fonctionne quand je ne demande pas une clause where en utilisant une variable mais juste en utilisant un nombre spécifique. Je veux aussi être capable de stocker les résultats dans une table temporaire.Stockage de variables dynamiques en table temporaire et erreur variable
Est-il possible d'avoir une variable clause where dans un pivot dynamique et est-il possible d'enregistrer les résultats dans une table temporaire?
Voici ma requête en cours qui ne fonctionne pas
declare @CourseID int = 2
DECLARE
@cols AS NVARCHAR(MAX),
@query AS NVARCHAR(MAX)
SET @cols = STUFF((SELECT distinct ',' + QUOTENAME(UnitID)
FROM LMS_Unit_Status where CourseID = @CourseID
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'')
set @query = 'SELECT LearnerID, ' + @cols + ' from
(select LearnerID,UnitID,Completed from LMS_Unit_Status where CourseID = @CourseID) as s
pivot
(
min(Completed)
for UnitID in (' + @cols + ')
) p'
execute(@query);
Msg 137, Level 15, State 2, Line 2
Must declare the scalar variable "@CourseID".
Merci
Merci @Arek - j'ai essayé, mais je reçois le message 'Msg 245, niveau 16, état 1, ligne 12 La conversion a échoué lors de la conversion de la valeur nvarchar « SELECT LearnerID, [CU2306] dans #UnitReport de (sélectionnez LearnerID, UnitID, Completed à partir de LMS_Unit_Status où CourseID = 'au type de données int.' – gillers322