[英]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.