SQL: Group SUM values by date ranges and show in multiple columns by date -


i have sql table showing charge amounts per person , associated date. i'm looking create printout of each person's charges per month. have following code show me everyone's data 1 month i'd put in 1 report without having rerun every month's date range. there way pull data @ once? i'd columns show:

last name january february march etc

name amt amt amt

here code pull data april example. you'll see dates codes yyyymmdd. code works 1 month @ time.

select pm.last_name, sum(amt) total_charge charges c inner join provider_mstr pm on c.rendering_id = pm.provider_id begin_date_of_service >= '20150401' , begin_date_of_service <= '20150431' group pm.last_name 

a generic solution uses sum on cases:

select pm.last_name,    sum(case when begin_date_of_service >= '20150101' , begin_date_of_service  < '20150201' amt else 0 end) total_charge_jan,   sum(case when begin_date_of_service >= '20150201' , begin_date_of_service  < '20150301' amt else 0 end) total_charge_feb,   sum(case when begin_date_of_service >= '20150301' , begin_date_of_service  < '20150401' amt else 0 end) total_charge_mar, ... charges c inner join provider_mstr pm on c.rendering_id = pm.provider_id begin_date_of_service >= '20150101' , begin_date_of_service  < '20160101' group pm.last_name 

depending on dbms might have pivot function or similar...


Comments

Popular posts from this blog

javascript - Bootstrap Popover: iOS Safari strange behaviour -

Magento/PHP - Get phones on all members in a customer group -

session - Logging Out Using PHP -