TSQL:标记3天,从3个工作日前开始

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

我的目标是建立一个标志,表明过去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
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

请注意,这个答案假设您每天都有连续的数据。如果没有,那么我们必须考虑如何在一系列的时间内处理中断。

我会测试这个,但是已经看起来是一个好的解决方案。