Нечетные выходные данные GROUP BY DB2 - результаты не такие, как ожидалось - PullRequest
0 голосов
/ 19 ноября 2009

Если я запускаю следующий запрос:


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 для обоих столбцов).

Я что-то упускаю из виду?

1 Ответ

0 голосов
/ 19 ноября 2009

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

, сумма (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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...