我是SQL的新手,我需要一些查询帮助
我在表中有一个id的两个金额,我希望这两个金额显示在不同的列中但是同一行。 ID和Balance字段来自基本的select
语句。
例如,这是我得到的数据
ID Balance
--------------------
2449079 2282.64
2449079 0.00
2449079 0.00
2452482 10556.96
2452482 0.00
2455481 2000.00
2455481 0.01
但我希望显示下面提到的金额。如果只有一个余额,则其余字段应为零
ID BalAmt1 BalAmt2 BalAmt3 BalAmt4
----------------------------------------------------
2449079 2282.64 0 0 0
2452482 10556.96 0 0 0
2455481 2000 0.01 0 0
答案 0 :(得分:0)
你有没有试过@Rabbit说的话。这应该工作。这是一个工作样本
Declare @table1 Table(Id int, Balance float)
Insert into @table1 values (2449079, 2282.64)
Insert into @table1 values (2449079, 0.00)
Insert into @table1 values (2449079, 0.00)
Insert into @table1 values (2452482, 10556.96)
Insert into @table1 values (2452482, 0.00)
Insert into @table1 values (2455481, 2000.64)
Insert into @table1 values (2455481, 0.00)
SELECT *
FROM (
SELECT Id, Balance,
('Bal' + CAST(ROW_NUMBER() OVER(PARTITION BY Id Order by Id asc) AS VARCHAR))AS row FROM @table1
) as s
PIVOT
(
SUM(Balance)
FOR row IN (Bal1, Bal2, Bal3, Bal4)
)AS pvt