首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Server 2012中创建weekCount列

在Server 2012中创建weekCount列
EN

Stack Overflow用户
提问于 2013-10-06 22:33:36
回答 4查看 121关注 0票数 0

我有这样的数据:

代码语言:javascript
复制
id    worked_date
-----------------    
1     2013-09-25
2     2013-09-26
3     2013-10-01
4     2013-10-04
5     2013-10-07

我想添加一个名为weekCount的列。基础日期是2013-09-25。因此,来自worked_date的来自2013-09-25 to 2013-10-01的所有数据都将weekCount作为1,而来自2013-10-02 to 2013-10-8的数据将有weekCount作为2,依此类推。怎样才能做到呢?

谢谢。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-10-07 01:38:14

也许像这样的方法可以解决你的问题。

我计算了一个内存中的表,其中包含了一周的边界以及一个单调增长的数字(BuildWeeks)。然后将我的worked_date值与我的日期边界进行比较。根据您对@sgeddes的注释,您需要反向的周数,因此我使用DENSE_RANK函数来计算ReverseWeekNumber

代码语言:javascript
复制
WITH BOT(StartDate) AS
(
    SELECT CAST('2013-09-25' AS date)
)
, BuildWeeks (WeekNumber, StartOfWeek, EndOfWeek) AS
(
    SELECT 
        N.number AS WeekNumber
    ,   DateAdd(week, N.number -1, B.StartDate) AS StartOfWeek
    ,   DateAdd(d, -1, DateAdd(week, N.number, B.StartDate)) AS EndOfWeek
    FROM
        dbo.Numbers AS N
        CROSS APPLY
          BOT AS B
)
SELECT
    M.*
,   BW.*
,   DENSE_RANK() OVER (ORDER BY BW.WeekNumber DESC) AS ReverseWeekNumber
FROM
    dbo.MyTable M
    INNER JOIN
        BuildWeeks AS BW
        ON M.worked_date BETWEEN BW.StartOfWeek ANd BW.EndOfWeek
;

SQLFiddle

票数 1
EN

Stack Overflow用户

发布于 2013-10-06 22:38:01

这里有一种使用DATEDIFF的方法

代码语言:javascript
复制
select id, 
    worked_date, 
    1 + (datediff(day, '2013-09-25', worked_date) / 7) weekCount 
from yourtable
  • SQL Fiddle演示
票数 3
EN

Stack Overflow用户

发布于 2013-10-06 23:48:01

如果您正在寻找财政周号,我将使用一个计算周数的函数:

代码语言:javascript
复制
CREATE FUNCTION FiscalWeek(@FiscalStartDate datetime, @EvalDate datetime)  
RETURNS INT  
AS  
BEGIN  
DECLARE @weekNumber INT = (DATEDIFF(DAY, @FiscalStartDate, @EvalDate) / 7) + 1

RETURN (@weekNumber % 52)
END
GO

如果您使用的财政起始日期为“2013-09-25”,而评估日期为“2014-09-25”,您将得到1周的时间。

使用一个函数可以让您有更多的灵活性来做任何您需要的事情。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19214767

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档