不同列

时间:2015-12-04 19:10:12

标签: sql sql-server-2012

我是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

1 个答案:

答案 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