i trying return list of bill details on 1 database row manner in joining tables not seem having desired effect, have 2 classes bill , meter:
bill { billid, customername, town, postcode, dateofissue, totalamount } meter { meterid, billid, metertype, meterread, meterreaddate }
i trying join follows:
select bill inner join meter b on a.billid = b.billid dateofissue between '1 jul 2015' , '30 jun 2016'
if bill has 2 different types of meters , 1 meter type day , 1 night getting 2 rows bill. how can select 1 row setting column if metertype night comes in column header called night , if day comes in column header called day
what kind of join type best serve purpose?
using table aliases good. using abbreviations tables better. in addition, should use standard date formats.
the answer question use conditional aggregation:
select b.billid, sum(case when metertype = 'day' metterread else 0 end) reading_day, sum(case when metertype = 'night' metterread else 0 end) reading_night bill b join meter m on b.billid = m.billid b.dateofissue between '2015-07-01' , '2016-06-30' group b.billid;
Comments
Post a Comment