动态列到行SQL

时间:2013-11-28 20:16:56

标签: sql sql-server-2008 pivot-table

我有下表

CREATE TABLE [dbo].[PC_Adjustments](
    [Property_Adjustment_id] [int] IDENTITY(1,1) NOT NULL,
    [property_id] [numeric](18, 0) NOT NULL,
    [Adjustment_amount] [decimal](18, 2) NULL,
    [Adjustment_Desc] [nvarchar](2000) NULL
) ON [PRIMARY]

insert into PC_Adjustments values(12,2.3,'test1')
insert into PC_Adjustments values(12,4.3,'test2')
insert into PC_Adjustments values(12,4.3,'test3')
insert into PC_Adjustments values(12,6.3,'test4')
insert into PC_Adjustments values(13,2.3,'test31')
insert into PC_Adjustments values(13,2.3,'testd1')
insert into PC_Adjustments values(13,2.3,'test41')
insert into PC_Adjustments values(14,2.3,'test561')

在上面的场景中,property_id 12有4行,13有3可能会增加或减少。我想说的是它的动态行。

我需要关注输出。

property_id Adjustment_1    Amount  Adjustment_2    Amount  Adjustment_3    Amount  Adjustment_4    Amount
12           test1          2.3  test2           4.3      test3           4.3     test4          6.3
13          test31          2.3  testd1          2.3      test41          2.3     NULL            NULL
14          test561         2.3   NULL           NULL      NULL         NULL      NULL          NULL

我正在使用MSSQL 2008。

1 个答案:

答案 0 :(得分:1)

进行动态透视的技巧是获取列名称。这可以使用“STUFF”功能完成。

我在一两个星期前遇到过这个问题。当我试图双重转动时,我的情况有点困难,但这个答案提供了一个很好的演练,一步一步地说明它是如何工作的。你应该能够得到你需要做的事情的要点,避免处理额外的支点。

SQL Double Dynamic Pivot

这应该引导您完成您想要做的事情。