2015-07-15 2 views
0

Как сравнить результат, который я получил от функции декодирования, с другим значением. Вот запрос.Сравните результат с декодирования

select employee, 
SUM(DECODE(type, 'credit' , amount, 
        'debit', allAmount)) result, 
sign(result > 1000) 
from table group by employee; 

В результате я получаю с помощью этого SUM(DECODE(type, 'credit' , amount, 'debit', allAmount)) результата, должен быть по сравнению с некоторым значением называется «1000». Как сравнить?

+2

Сравнить где? Вам нужны только строки, где это декодированное значение больше 1000? (Или, может быть, абсолютное число более 1000). Какова линия знака, предназначенная для этого? –

ответ

2
with x as 
(select employee, 
SUM(DECODE(type, 'credit' , amount, 
       'debit', allAmount)) result 
from table group by employee) 
select * from x where result > 1000 

Предполагая, что вам нужны строки, которые соответствуют вам result > 1000 условие, это выполнит эту работу.

+0

Вам не нужно использовать конструкцию. Это выглядит немного пугающим для новичков. В этом простом случае будет выполнен простой встроенный просмотр. – hetOrakel

+0

с х в качестве (выберите сотрудника, SUM (DECODE (типа, 'кредит', сумма, 'дебет', allAmount)) результат из таблицы группы работником) выберите * из х, где результат> 1000; Это работает .. Спасибо – user3242119

2

Альтернативный метод:

select employee 
    , sum(decode(type, 'credit', amount 
         , 'debit', allAmmount)) result 
    from table 
group by employee 
having sum(decode(type, 'credit', amount 
         , 'debit', allAmmount)) > 1000; 
Смежные вопросы