У меня есть динамический сводный запрос, и я хочу повернуть на businessaccountnumber, который, как я знаю, существует в transaction_table, но он продолжает возвращать это «Недопустимое имя столбца« bizi ».» - для линия 1.SQL Server 2008 R2: Недопустимое имя столбца в запросе PIVOT
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;
EDIT: Благодаря спин за указание свою ошибку, но теперь у меня есть новая ошибка.
выход я ищу это:
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;
Ошибка теперь говорит:
Msg 8180, уровень 16, состояние 1, строка 1
Statement (s) не может быть подготовлен ,Msg 102, Level 15, State 1, Line 1
Неправильный синтаксис около 'Qry12090'.Msg 1056, Level 15, State 1, Line 1
Число элементов в списке выбора превышает максимально допустимое число 4096 элементов.
А я вижу! Спасибо. но теперь у меня новая ошибка. –
@JaseVillam well, 4096 - максимальное количество колонок для выбора – Backs