मेरा सुझाव है grouping sets
:
select coalesce(location, 'Total') as location,
coalesce(home_team_name, 'Total') as home_team_name,
sum(case when match_date >= date '2018-01-01' and
match_date < date '2018-02-01'
then 1 else 0
end) as january_2018,
sum(case when match_date >= date '2018-02-01' and
match_date < date '2018-03-01'
then 1 else 0
end) as february_2018,
sum(case when match_date >= date '2018-03-01' and
match_date < date '2018-04-01'
then 1 else 0
end) as march_2018,
sum(case when match_date >= date '2018-01-01' and
match_date < date '2019-01-01'
then 1 else 0
end) as total_2018
from match_results
group by grouping sets ( (location, home_team_name), () );
यानी क्वेरी को दोहराना अनावश्यक है। मैंने वास्तविक तिथियों का उपयोग करने के लिए दिनांक तुलनाओं को भी बदल दिया है। मुझे तारीख के हिस्सों को निकालने की तुलना में यह अधिक पठनीय और रखरखाव योग्य लगता है।