Вы можете легко разделить итоговые значения самостоятельно, но я не понимаю, как настроен no of accounts
. Вам придется объяснить лучше.
Чтобы разделить продажи, вы можете использовать это
declare @sales table (salesday date, account varchar(5), sales int, gender varchar(10))
insert into @sales (salesday, account, sales, gender)
values ('20190401', 'ACC01', 5000, 'MALE'),
('20190401', 'ACC02', 6000, 'FEMALE'),
('20190401', 'ACC03', 7000, 'FEMALE'),
('20190401', 'ACC04', 8000, 'MALE'),
('20190402', 'ACC01', 7500, 'MALE'),
('20190402', 'ACC02', 4000, 'FEMALE'),
('20190402', 'ACC03', 10000, 'FEMALE'),
('20190402', 'ACC04', 20000, 'MALE'),
('20190403', 'ACC01', 8500, 'FEMALE'),
('20190403', 'ACC05', 3500, 'FEMALE'),
('20190404', 'ACC02', 9500, 'FEMALE'),
('20190404', 'ACC06', 3600, 'FEMALE'),
('20190404', 'ACC07', 4800, 'MALE'),
('20190405', 'ACC01', 15000, 'FEMALE'),
('20190405', 'ACC03', 12500, 'FEMALE')
select s.salesday,
sum(sm.sales) as sales_male,
sum(sf.sales) as sales_female
from @sales s
left join @sales sm on s.salesday = sm.salesday
and s.account = sm.account
and sm.gender = 'MALE'
left join @sales sf on s.salesday = sf.salesday
and s.account = sf.account
and sf.gender = 'FEMALE'
group by s.salesday
order by 1
результат будет
salesday sales_male sales_female
-------- ---------- ------------
2019-04-01 13000 13000
2019-04-02 27500 14000
2019-04-03 null 12000
2019-04-04 4800 13100
2019-04-05 null 27500