sql server - Grouping in analytical query -
i have table return records :
name total_case_count user_case_count p_count rej_count ppp_count other_count abc 20 10 03 abc 20 10 05 abc 20 10 02 xyz 20 10 05 xyz 20 10 02 xyz 20 10 01 xyz 20 10 02 but need result :
name total_case_count user_case_count p_count rej_count ppp_count other_count abc 20 10 03 05 02 xyz 20 10 05 02 01 02 means sum of user count & other count come in same row. i'm using query:
select distinct result.name, result.user_account_id,total_case_count,user_case_count,pending_case_count, rejected_case_count,pending_for_payment_case_count,active_case_count ( select row_number() on (order c.case_id asc) row_index, ua.user_account_id, ua.first_name ||' '||ua.last_name name, count(*) on () total_case_count, count(*) on (partition ua.user_account_id) user_case_count, case when c.case_status_id = 2 count(*) on (partition c.case_status_id,ua.user_account_id) end pending_case_count, case when c.case_status_id = 4 count(*) on (partition c.case_status_id,ua.user_account_id) end rejected_case_count, case when c.case_status_id = 6 count(*) on (partition c.case_status_id,ua.user_account_id) end pending_for_payment_case_count, case when c.case_status_id in (1,3,5,7,8,9) count(*) on (partition c.case_status_id,ua.user_account_id) end active_case_count case c inner join case_status cs on cs.case_status_id = c.case_status_id inner join sso.user_accounts ua on ua.user_account_id = c.created_by inner join sso.user_in_types uit on uit.user_account_id = ua.user_account_id inner join sso.user_types ut on ut.user_type_id = uit.user_type_id ut.application_id = 12 , ut.user_type_id = 2170 ) result order name any suggestion appreciated..
you can use aggregation in outer select:
select result.name, result.user_account_id,max(total_case_count),max(user_case_count),max(pending_case_count), max(rejected_case_count),max(pending_for_payment_case_count),max(active_case_count) ( select row_number() on (order c.case_id asc) row_index, ua.user_account_id, ua.first_name ||' '||ua.last_name name, count(*) on () total_case_count, count(*) on (partition ua.user_account_id) user_case_count, case when c.case_status_id = 2 count(*) on (partition c.case_status_id,ua.user_account_id) end pending_case_count, case when c.case_status_id = 4 count(*) on (partition c.case_status_id,ua.user_account_id) end rejected_case_count, case when c.case_status_id = 6 count(*) on (partition c.case_status_id,ua.user_account_id) end pending_for_payment_case_count, case when c.case_status_id in (1,3,5,7,8,9) count(*) on (partition c.case_status_id,ua.user_account_id) end active_case_count case c inner join case_status cs on cs.case_status_id = c.case_status_id inner join sso.user_accounts ua on ua.user_account_id = c.created_by inner join sso.user_in_types uit on uit.user_account_id = ua.user_account_id inner join sso.user_types ut on ut.user_type_id = uit.user_type_id ut.application_id = 12 , ut.user_type_id = 2170 ) result group result.name, result.user_account_id order name
Comments
Post a Comment