【发布时间】:2015-06-24 01:26:35
【问题描述】:
我有一个日期维度表,我需要在其中添加 NumberofBusinessDay 列,它会告诉我它是工作日数。例如:
Date WeekendFlag BusinessDayFlag **NumberofBusinessDay**
01/01/2015 N N 0
01/02/2015 N Y 1
01/03/2015 Y N 2
01/04/2015 Y N 2
01/05/2015 N Y 2
我已将工作日数分配给工作日,但我正在努力为周末分配一个数字,这将与下一个工作日相同 - 星期一(如果星期一是假期,它将是星期二) ,如上表所示。这是我到目前为止所拥有的:
Date WeekendFlag BusinessDayFlag **NumberofBusinessDay**
01/01/2015 N N 0
01/02/2015 N Y 1
01/03/2015 Y N NULL
01/04/2015 Y N NULL
01/05/2015 N Y 2
任何形式的帮助将不胜感激
我对工作日分配 BusinessDays 的查询(仅 2015 年数据):
SELECT Date, WeekendFlag, BusinessDayFlag
,NumberofBusinessDay = CASE WHEN WeekendFlag = 'N' THEN
ROW_NUMBER() OVER (Partition BY YearCode, MonthCode ORDER BY WeekendFlag, Date ASC)
END
INTO #test
FROM DimDate
WHERE Date between '01/01/2015' AND '12/31/2015' --for testing purposes only
ORDER BY Date ASC
仅供参考 - 将周末记为工作日的目的是因为我们不想错过周末期间发生的任何活动(这是可能的),我们希望在下一个工作日计算这些活动。
【问题讨论】:
-
如果您拥有最新版本的 SQL Server 之一,您可以使用 LEAD 函数
-
周一非工作日你会做什么?
-
当 DATENAME(dw,date) IN ('Saturday','SUNDAY') THEN NULL ELSE date END from table 时选择大小写
-
@Sachu 我已经发布了查询
-
@Dan Guzman 基本上是下一个工作日,在这种情况下是星期二。
标签: sql sql-server date business-intelligence