SQL Server 2008:创建动态列名称

时间:2013-07-23 15:27:15

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

我有一个我无法解决的问题。我在Microsoft SQL Server 2008上工作,我有一个包含四列的表

Id
Date (2013-07, 2013-08, 2011-03, etc)
Amount 1 (100, 150, etc.) 
Amount 2 (100, 80, etc.)

如果Amount 1 > 150,那么我需要创建新列,其中Date中的值为列名,并将Amount 2分发到Date后的 Id Date Amount 1 Amount 2 ---------------------------------- 1 2013-07 160 60 2 2013-10 180 80 Id Date Amount 1 2013-08 2013-09 2013-10 2013-11 2013-12 2014-01 ... -------------------------------------------------------------------------------- 1 2013-07 160 10 10 10 10 10 10 2 2013-10 180 20 20 20... 之后的一个月内价值。

它应该是这样的:

{{1}}

我不知道该怎么做,任何帮助都非常感谢!谢谢!

1 个答案:

答案 0 :(得分:1)

表本身不应该有这些额外的列,因为这将是非规范化的表结构。在许多情况下,这是一种很难存储数据的方法。但是,您可以轻松地对现有表进行查询,该表将返回所需表单中的其他列,以便您可以通过这种方式显示它。查看PIVOT and UNPIVOT