Here's the table that I have,
| Number | Status | Time |
|---|---|---|
| 2132 | Group Joined | August 22, 2022, 2:54 PM |
| 3299 | Group Joined | August 12, 2022, 9:24 PM |
| 3299 | Group Left | August 23, 2022, 5:43 PM |
| 2132 | Group Left | August 30, 2022, 5:32 PM |
| 2132 | Group Joined | September 3, 2022, 2:23 PM |
and I need time difference between Group Joined and Group Left of same Number and the Time column in the table is in bona fide datetime format.
And I only need the phone numbers whose time period is More than 12 hours.
I have tried using DATEDIFF but I am somehow not able to get the output I need.
CodePudding user response:
We can use DATEDIFF() along with conditional aggregation:
SELECT Number
FROM yourTable
GROUP BY Number
HAVING DATEDIFF(hour,
MAX(CASE WHEN Status = 'Group Joined' THEN Time END),
MAX(CASE WHEN Status = 'Group Left' THEN Time END)) > 12;
Here the max of CASE expressions find the times for group joined and group left.
