2009-11-19 2 views
0

Если я запускаю следующий запрос:Одд GROUP BY вывода DB2 - результаты не как ожидалось


select load_cyc_num 
, crnt_dnlq_age_cde 
, sum(cc_min_pymt_amt) as min_pymt 
, sum(ec_tot_bal) as budget 
, case when ec_tot_bal > 0 then 'Y' else 'N' end as budget 
, case when ac_stat_cde in ('A0P','A1P','ARP','A3P') then 'Y' else 'N' end as arngmnt 
, sum(sn_close_bal) as st_bal 
from statements 
where (sn_close_bal > 0 or ec_tot_bal > 0) 
and load_cyc_num in (200911) 
group by load_cyc_num 
, crnt_dnlq_age_cde 
, case when ec_tot_bal > 0 then 'Y' else 'N' end 
, case when ac_stat_cde in ('A0P','A1P','ARP','A3P') then 'Y' else 'N' end 

затем я получаю правильный «БЮДЖЕТ» группировку, но не правильный «ПРОВЕДЕНИЕ» группировка, только две строки имеют «Y».

Если я изменяю порядок операторов case в GROUP BY, то получаю правильную группировку (полное разбиение по Y-N для обоих столбцов).

Я пропустил что-то очевидное?

ответ

0

Попробуйте переставить

, сумма (cc_min_pymt_amt) в min_pymt, сумма (ec_tot_bal) в бюджет

до конца оператора выбора, т.е.

select load_cyc_num, 
crnt_dnlq_age_cde, 
case when ec_tot_bal > 0 then 'Y' else 'N' end as budget, 
case when ac_stat_cde in ('A0P','A1P','ARP','A3P') then 'Y' else 'N' end as arngmnt, 
sum(sn_close_bal) as st_bal, 
sum(cc_min_pymt_amt) as min_pymt, 
sum(ec_tot_bal) as budget 
    from statements 
where (sn_close_bal > 0 or ec_tot_bal > 0)and load_cyc_num in (200911) 
group by load_cyc_num, 
crnt_dnlq_age_cde, 
case when ec_tot_bal > 0 then 'Y' else 'N' end , 
case when ac_stat_cde in ('A0P','A1P','ARP','A3P') then 'Y' else 'N' end 
+0

Неа, изменение порядка из select не влияет. – CallCthulhu

 Смежные вопросы

  • Нет связанных вопросов^_^