【发布时间】:2014-04-10 13:45:50
【问题描述】:
请你帮我把这个脚本放到一个临时表中。我已经为此工作了几个小时,它一直给我错误。
DECLARE @PivotColumnHeaders VARCHAR(MAX)
SELECT @PivotColumnHeaders =
COALESCE(@PivotColumnHeaders + ',[' + CAST(expansion as varchar(max)) + ']',
'[' + CAST(expansio
n as varchar(max))+ ']')
INTO #temp
FROM (Select distinct expansion from #CD4_VL2) results
DECLARE @PivotTableSQL NVARCHAR(MAX)
SET @PivotTableSQL = N'
select * from
(
select subjectID,expansion,printableValue1
from #CD4_VL2) as results
PIVOT
(MAX([printableValue1])
FOR [expansion] IN (
' + @PivotColumnHeaders + '
)
) as PivotTable
--order by Performed_Date_And_Time desc
'
Execute(@PivotTableSQL )
【问题讨论】:
-
什么错误?如果它与语法有关,您是否尝试过
Printing@PivotTableSQL而不是Executeing 它,然后检查代码? -
另外(虽然我怀疑这是问题所在)你应该知道this warning:“不要在 SELECT 语句中使用变量来连接值(即计算聚合值)。可能会出现意外的查询结果。这是因为 SELECT 列表中的所有表达式(包括赋值)不能保证每个输出行都只执行一次"
-
根据 Damien 的评论,使用变异 COALESCE 执行
GROUP_CONCAT的替代方法是将STUFF与 xml 一起使用,例如这里stackoverflow.com/a/11985946/314291