我正在尝试使用以下代码旋转具有 400 个左右唯一值的列:
Declare @t VARCHAR(10)
Declare @A VARCHAR(1000)
Declare @B VARCHAR(1000)
set @A='SELECT Name, IRIS_ID__c'
SET @B='('
SELECT @A=@A+',['+Question_Concept_With_ImpactArea__c+'] as ['+Question_Concept_With_ImpactArea__c+']',@B=@B+'['+Question_Concept_With_ImpactArea__c+']'
FROM (SELECT DISTINCT Question_Concept_With_ImpactArea__c
FROM Company_Number_Response) cur
-- removing last ',' from both variables
SET @B=SUBSTRING(@B,1,LEN(@B)-1)
SET @A=@A+ + '
FROM
(SELECT NAME, IRIS_ID__c, Selected, Question_Concept_With_ImpactArea__c
FROM Company_Number_Response) s PIVOT (max(Unified_Response__c)
FOR Question_Concept_With_ImpactArea__c IN ' +@B+')) p ORDER BY [IRIS_ID__c];'
exec(@A);
运行此代码会引发错误“字符串 'CM_PcCOGSSup' 后的未闭合引号在 'CM_PcCOGSSup' 附近的语法不正确”
当我将最后一个命令从 exec 更改为 print 时,我可以看到正在读取许多值,但该语句只是在上述错误中的值处中断。我检查了数据,没有看到任何会导致这种情况的字符。此外,我认为结果可能太长,并将结果的最大数量更改为 text 为 8192。
任何帮助将不胜感激。