I have a query like this
Select a.ordernum, a.region, c.area, a.branchname, a.stagename,
sum(case when b.entrydatetime is not null THEN 1 ELSE 0 END) as 'Total Count',
sum(case when DATEDIFF(day, b.entrydatetime, GETDATE()) <=1 THEN 1 ELSE 0 END) as 'WITHIN 1 DAY',
sum(case when DATEDIFF(day, b.entrydatetime, GETDATE()) >1 AND DATEDIFF(day, b.entrydatetime, GETDATE()) <=2
THEN 1 ELSE 0 END) as 'WITHIN 2 DAYS'
FROM DATAtBLE a, datatbleb b, datatblec c where a.ordernum = b.ordernumber and a.ordernum = c.ordernum
and a.region in ('India,'US','Pakistan') and c.area in ('Chennai','West Bengal','New York') and a.branchname
('Brooklyn','Navi Mumbai')
order by a.region, c.area, a.branchname, a.stagename,a.ordernum
group by a.region, c.area, a.branchname, a.stagename,a.ordernum
And I get an output like this
ordernum | region | area | branchname | stagename | Total Count | WITHIN 1 DAY | WITHIN 2 DAYS |
---|---|---|---|---|---|---|---|
000000001 | India | NYC | Navi Mumbai | Ordered | 1 | 1 | 0 |
000000002 | India | NYC | Navi Mumbai | Ordered | 1 | 0 | 1 |
000000003 | India | NYC | Navi Mumbai | Shipped | 1 | 1 | 0 |
000000004 | India | NYC | Navi Mumbai | Shipped | 1 | 0 | 1 |
But the output am expecting is
region | area | branchname | stagename | Total Count | WITHIN 1 DAY | WITHIN 2 DAYS |
---|---|---|---|---|---|---|
India | NYC | Navi Mumbai | Ordered | 2 | 1 | 1 |
India | NYC | Navi Mumbai | Shipped | 2 | 1 | 1 |
You see I want the rows to be summed up based on the stagename and do not want individual rows for each order number. How can I my query be tweaked to get this output am expecting?
2
Answers
change, maybe will be works
Please try removing "a.ordernum" in select list, order by and group by as shown below. It will give you the expected output. Thank you!