T-Sql - 透视错误

发布于 2024-09-28 03:48:47 字数 729 浏览 1 评论 0原文

我在 T-Sql 查询中有以下代码,收到以下错误消息,但我不太确定导致错误的原因。我正在将 Pivot 语句编写为动态的,因为我不知道将返回的列。

错误消息:消息 8156,级别 16,状态 1,第 9 行 为“数据透视表”多次指定了“标题 - 认可费/END8”列。

临时表 #FeeTotals 有 3 列 1) dwordrkey(唯一 id 键),2) Desc_Cd:费用描述,3) Total:货币列

    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)  

I have the following code in a T-Sql query, I am getting the following error message and I am not really sure what is causing the error. I am writing the Pivot statement to be dynamic b/c I do not know the columns that will be returned.

Error Message: Msg 8156, Level 16, State 1, Line 9
The column 'Title - Endorsement Fee / END8' was specified multiple times for 'PivotTable'.

The Temp Table #FeeTotals has 3 columns 1) dwordrkey (unique id key), 2) Desc_Cd: description of the charge, 3) Total: a money column

    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)  

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

风吹过旳痕迹 2024-10-05 03:48:48

创建标头时,您需要从#FeeTotals 中选择DISTINCT DES_Cd 值。它必须在那里出现两次。还可以使用 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 

You will need to select DISTINCT values of Desc_Cd From #FeeTotals when creating the headers. It must be in there twice. Also use the QuoteName function so your code deals with any Desc_Cd values that contain the ] character correctly.

DECLARE @PivotColumnHeaders NVARCHAR(MAX)

SELECT @PivotColumnHeaders = 
COALESCE(@PivotColumnHeaders + ',' + Desc_Cd, Desc_Cd)
    FROM(
    SELECT DISTINCT QUOTENAME(Desc_Cd) AS Desc_Cd
    FROM #FeeTotals
    ) F 
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文