TSQL:标记3天,从3个工作日前开始
我的目标是建立一个标志,表明过去3天,条件是3个工作日必须已经过去。 假设今天是2月27日: 我有以下意见: 输入:TSQL:标记3天,从3个工作日前开始,tsql,Tsql,我的目标是建立一个标志,表明过去3天,条件是3个工作日必须已经过去。 假设今天是2月27日: 我有以下意见: 输入: date workday ---------- ------- 2017-02-27 1 2017-02-26 0 2017-02-25 0 2017-02-24 1 2017-02-23 1 2017-02-22 1 2017-02-21 1
date workday
---------- -------
2017-02-27 1
2017-02-26 0
2017-02-25 0
2017-02-24 1
2017-02-23 1
2017-02-22 1
2017-02-21 1
2017-02-20 1
2017-02-19 1
2017-02-18 1
2017-02-17 0
期望输出:
date workday flag
---------- ------- ----
2017-02-27 1 0
2017-02-26 0 0
2017-02-25 0 0
2017-02-24 1 0
2017-02-23 1 0
2017-02-22 1 1
2017-02-21 1 1
2017-02-20 1 1
2017-02-19 1 0
我一直在研究一些想法,但没有什么好主意。这里的一个选项,虽然可能不是最理想的,但将使用相关子查询来统计前两天和当前一天的工作日。如果此计数为3,则打印1作为标志,否则打印0
WITH cte AS (
SELECT date, workday,
(SELECT SUM(t2.workday) FROM yourTable t2
WHERE t2.date BEWTEEN DATEADD(day, -2, t1.date) AND t1.date) AS w_sum
FROM yourTable t1
)
SELECT t.date, t.workday,
CASE WHEN t.w_sum = 3 THEN 1 ELSE 0 END AS flag
FROM cte t
请注意,这个答案假设您每天都有连续的数据。如果没有,那么我们必须考虑如何在一系列的时间内处理中断。我会测试这个,但是已经看起来是一个好的解决方案。