你可以使用如下extract(Quarter from date)函数:
SELECT
campaign_id,
case when start_quarter=1 and start_year=2015 then 1 else 0 end as q1_2015,
case when start_quarter=2 and start_year=2015 then 1 else 0 end as q2_2015,
case when start_quarter=3 and start_year=2015 then 1 else 0 end as q3_2015,
case when start_quarter=4 and start_year=2015 then 1 else 0 end as q4_2015
FROM (
SELECT
campaign_id,
extract(MONTH FROM start_date) AS start_month,
extract(YEAR FROM start_date) AS start_year,
extract(QUARTER from start_date) as start_quarter,
extract(MONTH FROM end_date) AS end_month,
extract(YEAR FROM end_date) AS end_year,
extract(QUARTER FROM end_date) AS end_quarter
FROM table
) t1
或者,如果您更喜欢没有硬编码的选项,您可以简单地使用子查询。
SELECT
campaign_id,
extract(MONTH FROM start_date) AS start_month,
extract(YEAR FROM start_date) AS start_year,
extract(QUARTER from start_date) as start_quarter,
extract(MONTH FROM end_date) AS end_month,
extract(YEAR FROM end_date) AS end_year,
extract(QUARTER FROM end_date) AS end_quarter
FROM table
此选项将为您提供如下结果:
campaing_id start month start year start quarter end month end year end quarter
4 2015 2 4 2015 2
3 2017 1 3 2017 1
2 2015 1 3 2015 1
12 2014 4 12 2014 4
2 2017 1 2 2017 1
7 2016 3 8 2016 3