1

使用 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
)
4

1 回答 1

1

为了将行结果转换为列,您需要进行数据透视。

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

请查看这个问题并进行一些深入的谷歌搜索以了解动态枢轴。

于 2013-04-19T15:45:14.850 回答