我试图了解是否可以创建一个满足以下要求的SQL查询。转动这张桌子:
对此:
技巧或挑战是使用事件类型时间戳的时间顺序获得周期的顺序。我尝试过将ORDER BY与COUNT(*)进行不同的组合,但没有获得任何成功。可以使用SQL来实现吗?我们欢迎任何可以引导我走上正确道路的帮助。
答案 0 :(得分:2)
我注意到您是根据event_type
的前六个字符重新开始的。因此,您需要partition by
:
select t.*
row_number() over (partition by left(event_type, 6) order by timestamp) as cycle_id
from t;
编辑:
如果您的编号基于月份:
select t.*
row_number() over (partition by year(timestamp), month(timestamp) order by timestamp) as cycle_id
from t;
答案 1 :(得分:0)
对于您发布的示例数据,我认为所需的分组是下划线前EventType
列的一部分:
select
*,
row_number() over (
partition by left([Event Type], charindex('_', [Event Type]) - 1)
order by [TimeStamp])
) [Cycle Id]
from tablename