【问题标题】:Dynamic column to rows SQL [duplicate]动态列到行 SQL [重复]
【发布时间】:2013-11-28 20:16:56
【问题描述】:

我有下表

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。

【问题讨论】:

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


【解决方案1】:

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

我在一两周前遇到了这个确切的问题。当我尝试双轴旋转时,我的案例有点困难,但这个答案提供了一个很好的演练,一步一步地了解它是如何工作的。您应该能够了解您需要做的事情的要点,并避免处理额外的支点。

SQL Double Dynamic Pivot

这应该会引导您完成您正在尝试做的事情。

【讨论】:

  • 我的问题和提供的答案不同
猜你喜欢
  • 2012-10-03
  • 1970-01-01
  • 2021-08-07
  • 1970-01-01
  • 2015-10-02
  • 2015-12-29
  • 2018-12-15
  • 2014-04-13
  • 1970-01-01
相关资源
最近更新 更多