我正在开发一个SQL Server数据库,我需要跟踪生产操作结果的进展.每次操作(OP)都要try ,直到成功为止(outcome = 1).如果一个操作失败(outcome = 0),它将重试给定的次数,如果它通过,然后我们继续进行下一个操作.
操作存储在名为Operations的表中,如下所示:
id | OP | Outcome |
---|---|---|
1 | 1 | 0 |
2 | 1 | 0 |
3 | 1 | 1 |
4 | 2 | 1 |
5 | 3 | 1 |
6 | 4 | 0 |
7 | 4 | 0 |
8 | 4 | 1 |
9 | 5 | 0 |
10 | 5 | 1 |
我想创建一个视图,以特定格式跨行显示每个操作的结果.如果某个操作失败,则该行中的后续操作应显示为NULL,直到操作成功.以下是5种操作所需输出格式的示例:
OP 1 Outcome | OP 2 Outcome | OP 3 Outcome | OP 4 Outcome | OP 5 Outcome |
---|---|---|---|---|
0 | NULL | NULL | NULL | NULL |
0 | NULL | NULL | NULL | NULL |
1 | 1 | 1 | 0 | NULL |
1 | 1 | 1 | 0 | NULL |
1 | 1 | 1 | 1 | 0 |
1 | 1 | 1 | 1 | 1 |
我try 使用窗口函数和条件聚合来构建查询,以透视数据,但我在正确传播结果和处理失败后的后续操作中遇到了困难.
到目前为止,我得到的最好结果是this fiddle,但我不能确定如何合并已经成功的操作的NULL值.