sql - Case Statement having no effect on output -
i trying sums of donations based on bank approval status , grouped gift kind. however, script outputs rr , nr donations on separate lines (see below script). seems case statements aren't working @ all.
select gift_kind, case when c.bank_approval_status = 'ap' sum(c.charge_amount) end approved, case when c.bank_approval_status in ('rr','nr') sum(c.charge_amount) end rejected, case when c.bank_approval_status = 'ar' sum(c.charge_amount)*-1 end refunded, case when c.bank_approval_status not in ('ar','ap','rr','nr') sum(c.charge_amount) end other_status charge_log c, transactions t c.account_id=t.account_id , c.process_id= 'chg - 02532' , c.gift_date=t.gift_date , c.gift_seq=t.gift_seq , c.pledge_number=t.pledge_number , t.sts='a' group t.fund_type, t.gift_kind, c.bank_approval_status order gift_kind asc
i believe looking logic:
select gift_kind, sum(case when c.bank_approval_status = 'ap' c.charge_amount end) approved, sum(case when c.bank_approval_status in ('rr', 'nr') c.charge_amount end) rejected, sum(case when c.bank_approval_status in ('ar') c.charge_amount*-1 end) refunded, sum(case when c.bank_approval_status not in ('ar','ap','rr','nr') c.charge_amount end) other_status charge_log c join transactions t on c.account_id = t.account_id , c.gift_date = t.gift_date , c.gift_seq = t.gift_seq , c.pledge_number = t.pledge_number c.process_id = 'chg - 02532' , t.sts = 'a' group t.fund_type, t.gift_kind order gift_kind asc
notes:
- learn use proper
join
syntax. never use commas infrom
clause. - the
join
conditions should inon
clause, notwhere
clause. - the
case
argumentsum()
. - remove
bank_approval_status
group by
. - i don't know why
fund_type
ingroup by
. may have reason left it.
Comments
Post a Comment