簡體   English   中英

SQL Server 2008 R2:PIVOT查詢中的無效列名

[英]SQL Server 2008 R2: Invalid column name in PIVOT query

我有一個動態數據透視查詢,我想對我知道存在於transaction_table中的businessaccountnumber進行透視,但它會不斷返回“無效列名'bizi'。”-第1行。

DECLARE @Output nvarchar(max) = N''
DECLARE @PivotList varchar(max)


SELECT
  @PivotList = COALESCE(@PivotList + ', ', N'') + N'[' + bizid + N']'

FROM (SELECT DISTINCT
  BusinessAccountNumber [bizid]
FROM transaction_table
WHERE postingdate BETWEEN '1/01/2015' AND '2/01/2015'
) AS CustProds;

SET @Output = 'SELECT [bizName],[bizi]
    , ' + @PivotList + '
FROM  ( select businessname as [bizName],businessaccountnumber as [bizi],
        sum((Transactionamount*(-1))) as [Transactionamount] 
        FROM transaction_table
        WHERE postingdate between ''1/01/2015'' and ''2/01/2015''
        GROUP BY businessaccountnumber,businessname) as P
PIVOT ( SUM(Transactionamount) FOR P.bizi IN (' + @PivotList + ') ) AS PVT'

EXEC sp_executesql @Output;

編輯:感謝Backs指出我的錯誤,但現在我有一個新錯誤。

我正在尋找的輸出是:

Date      | bizid12| bizid13| bizid14...
01/01/2015|  $1    | $3     | $56
01/02/2015| $12    | $34    | $3
.....


DECLARE @Output nvarchar(max) = N''
DECLARE @PivotList varchar(max)


SELECT
  @PivotList = COALESCE(@PivotList + ', ', N'') + N'[' + bizid + N']'

FROM (SELECT DISTINCT
  BusinessAccountNumber [bizid]
FROM transaction_table
WHERE postingdate BETWEEN '1/01/2015' AND '2/01/2015'
) AS CustProds;

SET @Output = 'SELECT [sp_date]
    , ' + @PivotList + '
FROM  ( select Convert(varchar,postingdate,101) as [sp_date] 
        ,businessaccountnumber as [bizi],
        sum((Transactionamount*(-1))) as [Transactionamount] 
        FROM transaction_table
        WHERE postingdate between ''1/01/2015'' and ''2/01/2015''
        GROUP BY businessaccountnumber) as P
PIVOT ( SUM(Transactionamount) FOR P.bizi IN (' + @PivotList + ') ) AS PVT'

EXEC sp_executesql @Output;

現在出現錯誤:

消息8180,第16級,狀態1,第1行
無法准備聲明。

Msg 102,第15級,狀態1,第1行
'Qry12090'附近的語法不正確。

Msg 1056,第15級,狀態1,第1行
選擇列表中的元素數超過了允許的最大4096個元素數。

您不能在查詢SELECT [bizName],[bizi]使用FOR P.bizi IN在PIVOT FOR P.bizi IN 從選擇語句中刪除[bizi]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM