请帮助我生成以下我一直在努力解决的查询。假设我有一个简单的表,其中包含月份编号和该特定月份是否有任何失败事件的信息
下面是生成示例数据的脚本:
WITH DATA(Month, Success) AS
(
SELECT 1, 0 UNION ALL
SELECT 2, 0 UNION ALL
SELECT 3, 0 UNION ALL
SELECT 4, 1 UNION ALL
SELECT 5, 1 UNION ALL
SELECT 6, 0 UNION ALL
SELECT 7, 0 UNION ALL
SELECT 8, 1 UNION ALL
SELECT 9, 0 UNION ALL
SELECT 10, 1 UNION ALL
SELECT 11, 0 UNION ALL
SELECT 12, 1 UNION ALL
SELECT 13, 0 UNION ALL
SELECT 14, 1 UNION ALL
SELECT 15, 0 UNION ALL
SELECT 16, 1 UNION ALL
SELECT 17, 0 UNION ALL
SELECT 18, 0
)
鉴于“重复失败”的定义:
如果在任何 6 个月期间至少 4 个月内发生事件失败,那么最后一个月出现此类失败是“重复失败”,我的查询应返回以下输出
Month Success RepeatedFailure
1 0
2 0
3 0
4 1
5 1
6 0 R1
7 0 R2
8 1
9 0
10 1
11 0 R3
12 1
13 0
14 1
15 0
16 1
17 0
18 0 R1
在哪里:
- R1 在第 6 个月中 -1 次重复失败(过去 6 个月中出现 4 次失败)。
- R2 -第 7 个月的第 2 次重复失败(过去 6 个月中的 4 次失败)。
- R3 第 11 个月 -3 次重复失败(过去 6 个月内失败 4 次)。
R1 - 在第 18 个月再次出现第 1 次重复故障,因为在过去 6 个报告期中第一次发生新的重复故障时,重复故障应从头开始重新编号
重复失败是连续计算的,因为我必须根据它的数量应用适当的乘数:
- 第一次重复失败 - X2
- 第二次重复失败 - X4
- 第三次和更多重复失败-X5。