Reputation: 351
I have started the following code
SELECT distinct crq_risk
,count(crq_risk) as 'count'
,( select count(datediff(day,submit_date,crq_scheduled_for_approval_date))
from change_information
where crq_risk = 'Risk Level 1'
and submit_date >= '2016-05-01 00:00:00.000'
and crq_scheduled_for_approval_date IS NOT NULL
and crq_change_timing = 'Non Standard - Planned'
and datediff (day,submit_date,crq_scheduled_for_approval_date) < 10) as RL1
,( select count(datediff(day,submit_date,crq_scheduled_for_approval_date))
from change_information
where crq_risk = 'Risk Level 2'
and submit_date >= '2016-05-01 00:00:00.000'
and crq_scheduled_for_approval_date IS NOT NULL
and crq_change_timing = 'Non Standard - Planned'
and datediff (day,submit_date,crq_scheduled_for_approval_date) < 10) as RL2
,( select count(datediff(day,submit_date,crq_scheduled_for_approval_date))
from change_information
where crq_risk = 'Risk Level 3'
and submit_date >= '2016-05-01 00:00:00.000'
and crq_scheduled_for_approval_date IS NOT NULL
and crq_change_timing = 'Non Standard - Planned'
and datediff (day,submit_date,crq_scheduled_for_approval_date) < 5) as RL3
,( select count(datediff(day,submit_date,crq_scheduled_for_approval_date))
from change_information
where crq_risk = 'Risk Level 4'
and submit_date >= '2016-05-01 00:00:00.000'
and crq_scheduled_for_approval_date IS NOT NULL
and crq_change_timing = 'Non Standard - Planned'
and datediff (day,submit_date,crq_scheduled_for_approval_date) < 3) as RL4
from change_information
where submit_date >= '2016-05-01 00:00:00.000'
and crq_scheduled_for_approval_date IS NOT NULL
and crq_change_timing = 'Non Standard - Planned'
group by crq_risk
This results in
crq_risk count RL1 RL2 RL3 RL4
Risk Level 1 0 0.00 7 69 101
Risk Level 2 8 0.00 7 69 101
Risk Level 3 183 0.00 7 69 101
Risk Level 4 247 0.00 7 69 101
whereas I want the table to look like this
crq_risk count edited_count
Risk Level 1 0 0
Risk Level 2 8 7
Risk Level 3 183 69
Risk Level 4 247 101
Upvotes: 0
Views: 212
Reputation: 5432
You could use sum()
with case statement
SELECT distinct crq_risk
,count(crq_risk) as 'count'
,sum( case when ((crq_risk in ('Risk Level 1', 'Risk Level 2') and datediff (day,submit_date,crq_scheduled_for_approval_date) < 10)
or (crq_risk = 'Risk Level 3' and datediff (day,submit_date,crq_scheduled_for_approval_date) < 5)
or (crq_risk = 'Risk Level 4' and datediff (day,submit_date,crq_scheduled_for_approval_date) < 3))
then 1 else 0 end
) as edited_count
from change_information
where submit_date >= '2016-05-01 00:00:00.000'
and crq_scheduled_for_approval_date IS NOT NULL
and crq_change_timing = 'Non Standard - Planned'
group by crq_risk;
Upvotes: 2