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
Post a Comment