我在T-Sql查询中有以下代码,我收到以下错误消息,我不确定是什么导致错误。我正在将Pivot语句写成动态b / c我不知道将返回的列。
错误消息:消息8156,级别16,状态1,行9 “数据透视表”已多次指定“标题 - 背书费用/ END8”列。
Temp Table #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)
答案 0 :(得分:3)
创建标题时,您需要从#FeeTotals中选择Desc_Cd的DISTINCT
值。它必须在那里两次。还可以使用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