안녕하세요.
with T as (
select year(date_sub(now(), interval 2 year)) startDate
union
select year(date_sub(now(), interval 1 year)) startDate
union
select year(date_sub(now(), interval 0 year)) startDate
union
select year(date_add(now(), interval 1 year)) startDate
union
select year(date_add(now(), interval 2 year)) startDate
)
select distinct d.startDate date, coalesce(p.point, 0) point
from T d
LEFT join Points p ON Year(p.date) = d.startDate AND p.userId = 2
이 SQL문을 실행하면
| date | point |
| 2020 | 0 |
| 2021 | 100 |
| 2021 | 300 |
| 2022 | 1000 |
이런식으로 같은 년도에 해당하는 point를 더하고 합치고 싶습니다.
어디를 고쳐야 원하는 데이터를 얻을 수 있을까요?
알려주시면 감사하겠습니다.
-- Group By, Sum 하시면 됩니다. --
WITH t AS
(
SELECT YEAR(NOW()) - 2 yyyy
UNION ALL SELECT YEAR(NOW()) - 1
UNION ALL SELECT YEAR(NOW())
UNION ALL SELECT YEAR(NOW()) + 1
UNION ALL SELECT YEAR(NOW()) + 2
)
SELECT d.yyyy
, COALESCE(SUM(p.point), 0) point
FROM t d
LEFT OUTER JOIN Points p
ON d.yyyy = YEAR(p.date)
GROUP BY d.yyyy
;
와.. 감사합니다. 덕분에 해결했습니다!