T-SQL - 枢轴错误
问题描述:
我在T-SQL查询中有以下代码,我收到以下错误消息,我不确定是什么导致了错误。我正在写枢轴声明是动态的B/C我不知道将被返回的列。T-SQL - 枢轴错误
错误消息:消息8156,级别16,状态1,行9 “标题 - 背书费/ END8”列多次为“数据透视表”指定。
临时表#FeeTotals有3列1)dwordrkey(唯一ID键),2)Desc_Cd:充电的描述,3)总计:一钱列
DECLARE @PivotColumnHeaders VARCHAR(MAX)
SELECT @PivotColumnHeaders =
COALESCE(
@PivotColumnHeaders + ',[' + cast(Desc_Cd as varchar) + ']',
'[' + cast(Desc_cd as varchar)+ ']'
)
From #FeeTotals
DECLARE @PivotTableSQL NVARCHAR(MAX)
SET @PivotTableSQL = N'
Select *
From #FeeTotals
PIVOT
(
Sum(Total)
For Desc_Cd In (' + @PivotColumnHeaders + ')
)
As PivotTable'
Execute(@PivotTableSQL)
答
您需要选择DISTINCT
Desc_Cd的值从#FeeTotals创建标题时。它必须在那里两次。同样使用QuoteName
函数,以便您的代码正确处理包含]
字符的任何Desc_Cd
值。
DECLARE @PivotColumnHeaders NVARCHAR(MAX)
SELECT @PivotColumnHeaders =
COALESCE(@PivotColumnHeaders + ',' + Desc_Cd, Desc_Cd)
FROM(
SELECT DISTINCT QUOTENAME(Desc_Cd) AS Desc_Cd
FROM #FeeTotals
) F
对于调试,您可以用PRINT替换EXECUTE。然后你可以查看失败的实际语句。 – bobs 2010-10-15 16:29:25