表中有个字段为“日期”,如下:日期
-------
2016-2-3
2016-4-5
2017-8-9
2017-10-11
2018-3-4
…我知道,按年份分组统计,语句是这样的:SELECT Year(日期) AS 年份, ……
FROM 表名
……
GROUP Year(日期) 现在的需求是,如果是一般的年份,还是跟上面一样按年份分组统计,如果 年份=2017 ,就要分别统计“2017-05-01以前” 和 “2017-05-01至年底”两个期间的数据。请问可以实现吗?
-------
2016-2-3
2016-4-5
2017-8-9
2017-10-11
2018-3-4
…我知道,按年份分组统计,语句是这样的:SELECT Year(日期) AS 年份, ……
FROM 表名
……
GROUP Year(日期) 现在的需求是,如果是一般的年份,还是跟上面一样按年份分组统计,如果 年份=2017 ,就要分别统计“2017-05-01以前” 和 “2017-05-01至年底”两个期间的数据。请问可以实现吗?
FROM 表名
where Year(日期) <> 2017
……
GROUP by Year(日期) union allselect
sum(case when 日期<to_date('2017-5-1','yyyy-mm-dd') then 要统计额值 else 0),
sum(case when 日期>=to_date('2017-5-1','yyyy-mm-dd') then 要统计额值 else 0)
……
from 表名 where Year(日期) = 2017
FROM 表名
where Year(日期) <> 2017
……
GROUP by Year(日期) union all select
sum(case when 日期<to_date('2017-5-1','yyyy-mm-dd') then 要统计额值 else 0 end),
sum(case when 日期>=to_date('2017-5-1','yyyy-mm-dd') then 要统计额值 else 0 end)
……
from 表名 where Year(日期) = 2017
to_char(sign(to_date(t1.dat, 'yyyy-mm-dd') - to_date('20170501', 'yyyymmdd') + 1)),
t1.dat)