i have table:
||id || group || status || 1 || aaaa || aaaaa || 2 || aaaa || bbbbb || 3 || bbbb || aaaaa || 4 || bbbb || bbbbb || 5 || bbbb || aaaaa || 6 || bbbb || ccccc || 7 || bbbb || ddddd i want result of query:
|| status || group || count(status) || aaaaa || aaaa || 1 || bbbbb || aaaa || 1 || ccccc || aaaa || 0 || ddddd || aaaa || 0 || aaaaa || bbbb || 2 || bbbbb || bbbb || 1 || ccccc || bbbb || 1 || ddddd || bbbb || 1 i tried:
select status, count(status), group table group status, group but code can't add lines count = 0
first, want generate combinations of status , group. can using cross join. then, left join on table count
with cte as( select a.[group], b.[status] ( select distinct [group] yourtable )a cross join ( select distinct [status] yourtable )b ) select c.[status], c.[group], isnull(count(t.id), 0) statuscount cte c left join yourtable t on t.[status] = c.status , t.[group] = c.[group] group c.[status], c.[group] using subquery:
select c.[status], c.[group], isnull(count(t.id), 0) statuscount ( select * from( select a.[group], b.[status] ( select distinct [group] yourtable )a cross join ( select distinct [status] yourtable )b )t ) c left join yourtable t on t.[status] = c.status , t.[group] = c.[group] group c.[status], c.[group]
Comments
Post a Comment