У меня есть номера и имена кодов оплаты из таблицы Paycodes , и у меня есть сумма в ежемесячномTransaction. следующим образом:Как я могу использовать Pivot, используя переменную в SQL?
Paycodes
Code Name
1 Basic Salary
2 Variable Deduction Amount
3 Fixed/Var Insurance PayCode
MonthlyTransaction
Code Amount
1 3000
2 10000
1 130000
1 150000
3 120000
Я хочу, чтобы это было как это с помощью шарнира
Basic Salary Variable Deduction Amount Fixed/Var Insurance PayCode
31000 10000 120000
Я хочу использовать стержень просуммировать количество каждого Paycode, и я использовал это: -
DECLARE @data AS NVARCHAR(MAX)
DECLARE @query AS NVARCHAR(MAX)
-- DECLARE @data TABLE
--(
-- PaycodeName NVARCHAR(max)
--)
--INSERT INTO @data
-- (PaycodeName)
--select dbo.Paycode.PayCodeName FROM dbo.Paycode
select @data = Paycode.PayCodeName FROM Paycode
set @query = 'SELECT * FROM (
SELECT Paycode.Name , MonthlyTransaction.Amount
From MonthlyTransaction
LEFT JOIN dbo.Paycode ON Paycode.code = MonthlyTransaction.Paycode
) AS s
PIVOT
(
SUM(Amount)
FOR Paycode.Name IN ('[email protected]+')
) AS pvt '
EXECUTE Sp_executesql @query
Когда я печатаю @data, он получает только последний код оплаты! Может ли кто-нибудь помочь?
Возможный дубликат [SQL Server dynamic PIVOT q uery?] (http://stackoverflow.com/questions/10404348/sql-server-dynamic-pivot-query) –
Что делает опорная точка для выбора @data? – Jonny
@jonny ... он должен получить все имена кодов оплаты! –