這個問題在這里已經有了答案: 按列和多行分組為一行多列 2 個答案 16 小時前關閉。
我帶著我的問題回來了。我一直在嘗試創建一個動態資料透視程序,但在創建列時遇到了一些麻煩。
例子:
傳輸ID | 銀行名稱 | 凈額 | 帳戶 |
---|---|---|---|
01 | 暴風銀行 | 23.0 美元 | 一個 |
02 | 暴風銀行 | 14.0 美元 | 乙 |
03 | 暴風銀行 | 00.0$ | 一個 |
04 | 暴風銀行 | 12.0$ | 乙 |
預期結果:
帳戶 | 銀行名稱 | 凈額 | 凈額2 |
---|---|---|---|
一個 | 暴風銀行 | 23.0 美元 | 00.0$ |
乙 | 暴風銀行 | 14.0 美元 | 12.0$ |
SELECT DISTINCT [Account]
,[Currency]
,TranID
,[Bank Code]
,[Bank Name]
,[Client No_]
,[NetAmount]
INTO #TEMP
FROM [My Table]
DECLARE @cols AS NVARCHAR(MAX),
@query AS NVARCHAR(MAX);
select @cols = STUFF((SELECT distinct ',' QUOTENAME(c.NetAmount)
FROM #TEMP c
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'')
set @query = 'SELECT [Account], [Bank Name], ' @cols ' from
(
select [Account],TranID, NetAmount, [Bank Name]
from #TEMP
) x
pivot
(
max(TranID)
for NetAmount in (' @cols ')
) p '
到目前為止,我的結果如下:
帳戶 | 銀行名稱 | 23.0 美元 | 00.0$ |
---|---|---|---|
一個 | 暴風銀行 | 1 | 2 |
乙 | 暴風銀行 | 3 | 4 |
1、2、3、4 是 TranID。
我很接近,但我一直在努力解決這個問題,有人知道嗎?
謝謝!
uj5u.com熱心網友回復:
您需要使用 PIVOT 關閉派生列row_number()
例子
Declare @SQL varchar(max) = stuff( ( Select Distinct concat(',[NetAmount',row_number() over (partition by [Bank Name],[Account] order by [TranID]),']' )
From #TEMP For XML Path('') ),1,1,'')
Set @SQL = '
Select *
From (
Select [Account]
,[Bank Name]
,Item = concat(''NetAmount'',row_number() over (partition by [Bank Name],[Account] order by [TranID]) )
,Value = [NetAmount]
from #TEMP
) src
Pivot ( max( [Value] ) for Item in (' @SQL ') ) pvt
'
Exec(@SQL)
結果
Account Bank Name NetAmount1 NetAmount2
A StormWindBank 23.0$ 00.0$
B StormWindBank 14.0$ 12.0$
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/495636.html
下一篇:如何在日期范圍之間求和()價格?