获取记录更改状态的计数

时间:2019-06-25 15:46:32

标签: sql sql-server

我正在尝试找到一种最好的方法来计算记录发送给用户的次数(状态从3或4变回1)

这就是我的数据

ID   record_id  status_id
1    10909      2           
2    10909      3
3    10909      1
4    10909      3
5    10909      3
6    10909      4
7    10909      5

1 个答案:

答案 0 :(得分:2)

SQL表表示无序集。除非有列指定顺序,否则没有“上一个”或“下一个”行。

您的数据似乎没有这样的列。但是,如果这样做,则可以使用lag()

select record_id, count(*)
from (select t.*,
             lag(status) over (partition by record_id order by <ordering column>) as prev_status
      from t
     ) t
where status = 1 and prev_status in (3, 4)
group by record_id;