我需要创建一个 SQL 表或 View ,为两个日期范围内的每个月生成列。因此,01/01/2014 - 04/01/2014 的范围将生成四列,标题分别为 Jan 2014、Feb 2014、March 2014、April 2014。我还需要它来使用与这些月份相关的数据填充字段下表,而任何没有适当数据的字段将用空值填充:
------------------------------------------------------
| Project# | Months | MonthValues |
------------------------------------------------------
| 001 | Jan 2014 | 1 |
------------------------------------------------------
| 002 | Feb 2014 | 2 |
------------------------------------------------------
这应该创建表:
---------------------------------------------------------------------------------------
| Project# | Jan 2014 | Feb 2014 | March 2014 | April 2014 |
---------------------------------------------------------------------------------------
| 001 | 1 | null | null | null |
---------------------------------------------------------------------------------------
| 001 | null | 2 | null | null |
---------------------------------------------------------------------------------------
使用 SQL Server 2008。
一段时间以来我一直在努力解决这个问题,但没有任何运气,任何帮助将不胜感激!
最佳答案
您可以使用 PIVOT功能:
SELECT Project, [Jan 2014], [Feb 2014], [Mar 2014], [April 2014]
FROM T
PIVOT
( SUM(MonthValues)
FOR Months IN ([Jan 2014], [Feb 2014], [Mar 2014], [April 2014])
) pvt;
如果您需要能够根据日期改变列数,则需要使用动态 SQL 来生成上述查询。 SO 上确实有数百个关于此的问题。 I think this one会有所帮助(或者可能是 BlueFeet 的任何一个答案!)
关于sql - 创建以月份范围作为列的 SQL 表并使用表数据填充字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22074443/