I have data like this in a table:
https://i.stack.imgur.com/JYZjz.png
I want to group first two events (1, 10) as F1, than second two events (1,10) as F2
Running this SQL query:
SELECT
Id, Date, Event,
CASE
WHEN Event = 1 AND LEAD(Event) OVER (ORDER BY ID) = 10
THEN 'F1'
WHEN Event = 10 AND LAG(Event) OVER (ORDER BY ID) = 1
THEN 'F1'
ELSE NULL
END AS Flow
FROM
lxfr.SystemEventsDiary
WHERE
Event IN (1, 10)
I get this result as output:
| ID | Date | Event | Flow |
|---|---|---|---|
| 4 | 2022-02-07 00:00:00.000 | 1 | F1 |
| 44 | 2022-02-08 00:00:00.000 | 10 | F1 |
| 47 | 2022-02-09 00:00:00.000 | 1 | F1 |
| 72 | 2022-02-10 00:00:00.000 | 10 | F1 |
| 75 | 2022-02-10 00:00:00.000 | 1 | F1 |
| 97 | 2022-02-11 00:00:00.000 | 10 | F1 |
| 100 | 2022-02-11 00:00:00.000 | 1 | NULL |
| 113 | 2022-02-28 00:00:00.000 | 1 | F1 |
| 217 | 2022-03-04 00:00:00.000 | 10 | F1 |
| 235 | 2022-03-22 00:00:00.000 | 10 | NULL |
| 241 | 2022-03-22 00:00:00.000 | 1 | F1 |
| 270 | 2022-03-24 00:00:00.000 | 10 | F1 |
| 273 | 2022-03-24 00:00:00.000 | 1 | F1 |
| 308 | 2022-03-25 00:00:00.000 | 10 | F1 |
But I need a result like this:
| ID | Date | Event | Flow |
|---|---|---|---|
| 4 | 2022-02-07 00:00:00.000 | 1 | F1 |
| 44 | 2022-02-08 00:00:00.000 | 10 | F1 |
| 47 | 2022-02-09 00:00:00.000 | 1 | F2 |
| 72 | 2022-02-10 00:00:00.000 | 10 | F2 |
| 75 | 2022-02-10 00:00:00.000 | 1 | F3 |
| 97 | 2022-02-11 00:00:00.000 | 10 | F3 |
| 100 | 2022-02-11 00:00:00.000 | 1 | NULL |
| 113 | 2022-02-28 00:00:00.000 | 1 | F4 |
| 217 | 2022-03-04 00:00:00.000 | 10 | F4 |
| 235 | 2022-03-22 00:00:00.000 | 10 | NULL |
| 241 | 2022-03-22 00:00:00.000 | 1 | F5 |
| 270 | 2022-03-24 00:00:00.000 | 10 | F5 |
| 273 | 2022-03-24 00:00:00.000 | 1 | F6 |
| 308 | 2022-03-25 00:00:00.000 | 10 | F6 |
I tried with a CTE, but I'm getting errors...
Thanks