0
ich eine dynamische Dreh wie unten geschrieben haben, ich brauche eine where
Klausel hinzuzufügenDynamische Pivot-Klausel where
DECLARE @cols AS NVARCHAR(MAX),
@query AS NVARCHAR(MAX),@uniqId varchar(50);
set @uniqId = 'IN0s3Z0n8z4v'
select @cols = STUFF((SELECT distinct ',' + QUOTENAME(c.DisplayLabel)
FROM [dbo].[CountyCaseUserData] c where UniqueEntryId = @uniqId
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'')
print @cols
set @query = 'SELECT ' + @cols + '
from
(
SELECT UserInput, DisplayLabel,row_number()
over (partition by DisplayLabel order by CCId) AS No
from [dbo].[CountyCaseUserData] where UniqueEntryId = @uniqId
) x
pivot
(
max(UserInput)
for DisplayLabel in (' + @cols + ')
) p ';
execute(@query)
Aber bei der Ausführung, ich eine Nachricht
erhalten muss die skalare Variable deklarieren " @uniqId "
Was fehlt mir hier?
Erst declare '@ uniqid' dann entweder' wo UniqueEntryId = '' '+ @uniqId + ''') x' oder verwenden Sie 'sp_executesql', um als Parameter zu übergeben. –
Das Ausführen kennt die Variablen nicht. Sie müssen es also zur @Query hinzufügen, wie es Les H vorgeschlagen hat. – LukStorms