Запрос SQL для сравнения того же поля, имеющего разные значения из-за предложения группы - PullRequest
0 голосов
/ 17 мая 2018

У меня есть запрос, где мне нужно сравнить поле суммы, сгруппированное по дебетовому кредиту, я хочу получить результат, когда сумма кредита не равна сумме дебетования, запрос равен

select t_vocno,
       sum(t_amt),
       dc_type 
from   accotran 
where  f_yr = '1718' 
and    comp_cd = 'skl' 
group by  t_vocno, 
          dc_type 
order by t_vocno

, который дает вывод

1   215452.1600 D
1   215452.1600 C
2   207586.0000 D
2   207586.0000 C
3   248789.0000 D
3   248789.0000 C

У меня очень данные о ставке, поэтому я хочу поставить условие и получить данные, где дебет <> кредит

Я пытался

select t_vocno,
       sum(t_amt),
       dc_type 
from   accotran 
where  f_yr = '1718' 
and    comp_cd = 'skl' 
group by t_vocno,
         dc_type 
having case when dc_type= 'c' and t_vocno = t_vocno then sum(t_amt) end <>
       case when dc_type= 'd' and t_vocno = t_vocno then sum(t_amt)  end
order by t_vocno

1 Ответ

0 голосов
/ 17 мая 2018

Вы можете GROUP BY просто t_vocno и использовать условное агрегирование для расчета суммы кредита / дебета:

select t_vocno,
       sum(case when dc_type= 'c' then t_amt else 0 end) as c_sum,
       sum(case when dc_type= 'd' then t_amt else 0 end) as d_sum
from   accotran 
where  f_yr = '1718' 
and    comp_cd = 'skl' 
group by t_vocno
having sum(case when dc_type= 'c' then t_amt else 0 end) <>
       sum(case when dc_type= 'd' then t_amt else 0 end)
order by t_vocno
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...