by tosswin [SQL Query] mysql max query select [2022.05.24 15:36:46]
안녕하세요. 매번 들어와서 볼 때마다 대단하심을 느끼고 있습니다.
시작한지 얼마되지 않은데, 도저히 해결하지 못하는 것이 생겨 이렇게 질문을 드립니다.
테이블은 다음과 같습니다.
currentdatetime | tNum | Cnt1 | Cnt2 | Cnt3 |
2022-04-01 16:17:47 | 0 | 1 | 200 | 50 |
2022-05-24 12:23:34 | 1 | 100 | 120 | 70 |
2022-04-01 16:17:47 | 2 | 10 | 150 | 80 |
위와 같은 상태에서
Select 할 때
max(currentdatetime) 보다 작은 행에 대해서
Cnt1, Cnt2, Cnt3 를 0 으로 변경하고 싶습니다.
구현하고 싶은 테이블은 아래와 같습니다.
currentdatetime | tNum | Cnt1 | Cnt2 | Cnt3 |
2022-05-24 12:23:34 | 0 | 0 | 0 | 0 |
2022-05-24 12:23:34 | 1 | 100 | 120 | 70 |
2022-05-24 12:23:34 | 2 | 0 | 0 | 0 |
읽어봐주시고 생각해주셔서 감사합니다.
WITH t AS ( SELECT '2022-04-01 16:17:47' currentdatetime, 0 tNum, 1 Cnt1, 200 Cnt2, 50 Cnt3 UNION ALL SELECT '2022-05-24 12:23:34', 1, 100, 120, 70 UNION ALL SELECT '2022-04-01 16:17:47', 2, 10, 150, 80 ) SELECT MAX(currentdatetime) OVER() currentdatetime , tNum , CASE currentdatetime WHEN MAX(currentdatetime) OVER() THEN Cnt1 ELSE 0 END Cnt1 , CASE currentdatetime WHEN MAX(currentdatetime) OVER() THEN Cnt2 ELSE 0 END Cnt2 , CASE currentdatetime WHEN MAX(currentdatetime) OVER() THEN Cnt3 ELSE 0 END Cnt3 FROM t ;