SQL Server:将CTE行结果用作列

时间:2013-04-19 15:20:48

标签: sql sql-server-2008

使用SQL Server。我有以下问题:我正在创建一个基于开始/结束日期的CTE,它在两个日期之间每周生成一组行,如下所示:

StartDate       EndDate
2013-02-25 00:00:00.000 2013-03-03 00:00:00.000
2013-04-01 00:00:00.000 2013-04-07 00:00:00.000

现在我想将另一个SQL语句中的周行用作列,所以 COLUMN1 |第1周|第2周|第3周......

我不确定如何做到这一点。我的CTE声明如下。

有什么想法吗?

谢谢!

declare @sDate datetime,
        @eDate datetime

select  @sDate = '2013-02-25',
        @eDate = '2013-04-25';

WITH Weeks_CTE (StartDate, EndDate)
AS
(
  select @sDate StartDate, DATEADD(wk,DATEDIFF(wk, 0, @sDate), 6) EndDate
  union all
  select dateadd(ww, 1, StartDate),
    dateadd(ww, 1, EndDate)
  from Weeks_CTE
  where dateadd(ww, 1, StartDate)<=  @eDate
)

1 个答案:

答案 0 :(得分:1)

为了将行结果转换为列,您需要进行转轴。

如果列是动态的,则根据第一个查询的结果,您需要进行动态调整。

请查看this question并进行一些激烈的谷歌搜索,了解动态支点。