1

我正在尝试将开始 + 结束日期转换为多行,其中填充了周数和与之相关的年份。我的想法是使用脚本组件在 SSIS 中转换此开始 + 结束日期,并通过将 SynchronousInput 设置为“无”为每周创建行。我尝试为此使用时间跨度,但是当达到第 53 周以上时,这不计入下一年。

有谁知道如何做到这一点?

例子:

输入:

StartDate   EndDate
2014-12-29  2015-02-01

想要的输出:

  Year  WeekNr
  2015      1
  2015      2
  2015      3
  2015      4
  2015      5
4

1 回答 1

1

起初,我使用了此处的公式,但后来想起,使用 sqlserver 2008+ 有更好的方法,并将脚本更改为更具可读性:

;WITH N(N)AS 
(SELECT 1 FROM(VALUES(1),(1),(1),(1),(1),(1),(1),(1),(1),(1))M(N)),
tally(N)AS(SELECT ROW_NUMBER()OVER(ORDER BY N.N)FROM N,N a,N b,N c,N d,N e,N f)
SELECT
  datepart(iso_week, dateadd(week, n-1, @from)) weeknr,
  datepart(year, dateadd(week, datediff(day, -7*n, @from)/7, -4)) Year
FROM TALLY
WHERE
  datediff(ww, dateadd(d, -1, @from), dateadd(d, -1, @to))+1 >= n 

结果:

weeknr  Year
1       2015
2       2015
3       2015
4       2015
5       2015
于 2015-11-05T13:36:45.960 回答