在 SQL 中查找按日期排序的每个组中首次出现的倍数值



我有一个表,其中包含在事件组之前附加另一个值的每个操作。

只有 3 个操作:R、E、P

+ ----------+
----------+-----------+------------------------+ |滚动循环 |阻止 |运营 |在线订单 | + ----------+----------+-----------+------------------------+ |1 |3 |R |4 | |1 |3 |P |3 | |1 |3 |E |2 | |1 |3 |R |1 | |1 |2 |P |3 | |1 |2 |E |2 | |1 |2 |R |1 | |1 |1 |R |1 | |2 |1 |E |2 | |2 |1 |R |1 |

+ ----------+----------+-----------+------------------------+我想知道在 Rollcycle 的每个阻塞组之前发生了哪些操作。 我需要在访问SQL中执行此操作。

输出

+ ----------+----------+---+---+
---+ |滚动循环 |阻止 |R |E |P | + ----------+----------+---+---+---+ |1 |1 |1 |0 |0 | |1 |2 |0 |1 |1 | |1 |3 |1 |0 |0 | |2 |1 |1 |1 |0 |

+ ----------+----------+---+---+---+我找不到类似的东西。这可能太具体了。

请帮忙:)

编辑:返回原始表格

如果我正确关注了您,您可以过滤order大于或等于blocking的记录,然后进行条件聚合:

select
rollcycle,
blocking,
max(iif(operation = 'R', 1, 0)) R,
max(iif(operation = 'E', 1, 0)) E,
max(iif(operation = 'P', 1, 0)) P
from mytable 
where order >= blocking
group by rollcycle, blocking

最新更新