小编had*_*teo的帖子

将垂直结果转换为水平模式(T-SQL)

以下是示例数据:

CalculationDatePLResult
2014-01-02       100         
2014-01-03       200         
2014-02-03       300         
2014-02-04       400         
2014-02-27       500         

以下是预期结果(逻辑格式):

January                                 February                                 
CalculationDatePLResultCalculationDatePLResult  
2014-01-02       100         2014-02-03       300          
2014-01-03       200         2014-02-04       400          
                                         2014-02-27       500          

以下是预期结果(使用T-SQL查询):

Jan-CalculationDateJan-PLResultFeb-CalculationDateFeb-PLResult  
2014-01-02              100                2014-02-03              300                  
2014-01-03              200                2014-02-04              400                  
                                                       2014-02-27              500                  

目的:

  • 根据月份对结果进行分类.在上面的示例中,1月份的结果将放在1月份的细分中.
  • 月数可以是动态的.在上面的示例中,它仅显示1月和2月,因为只有2个月的结果
  • 结果将通过Excel显示.实际上,我可以查询多个查询表以在不同月份聚合结果,但如果可以通过一个查询返回所有结果,那么将更容易维护和调试.

以下是填充示例数据的脚本:

CREATE TABLE #PLResultPerDay ( CalculationDate DATETIME, PLResult DECIMAL(18,8) )
INSERT INTO #PLResultPerDay ( CalculationDate, PLResult ) VALUES ('2014-01-02' , 100 )
INSERT INTO #PLResultPerDay ( CalculationDate, …
Run Code Online (Sandbox Code Playgroud)

t-sql sql-server pivot sql-server-2008 sql-server-2012

4
推荐指数
1
解决办法
2116
查看次数