Исключая отрицательные числа, основанные на двух из нескольких результатов в столбце - PullRequest
0 голосов
/ 09 июля 2019

Я выполняю запрос, который приводит к количеству как негативов, так и позитивов для транзакций. Я хочу, чтобы они оба показывали для использованных продуктов; тем не менее, я хочу показать положительные результаты только при доставке и переводе.

Используется, доставка и передача все извлекаются из столбца Тип транзакции. Я не знаю лучшего способа ограничить количество только положительных величин только типами транзакций доставки и переноса и сохранить как использованные, так и отрицательные значения.

Я пытался ограничить это в предложении where, но это либо ограничивало его передачей строго по доставке и передает только ИЛИ, извлекая только положительные значения для всех типов транзакций.

В приведенном ниже коде он показывает оператор case, который я пытался выполнить, однако выдает ошибку при попытке запустить скрипт.

SELECT distinct 
  case when NOT upper(transaction_type) = 'PURCHASE' 
            AND DST_PROPERTY_TYPE = 'WAREHOUSE' THEN 'Return' 
       ELSE transaction_type END transaction_type
  , transaction_type as transaction_type_OG --, division_name2
  , case when transaction_type in ('Delivery','Transfer') 
         then quantity >=0 else quantity end
  , transaction_id
  , comments
  , src_division_name
  , src_property_name
  , src_property_type
  , src_afe, src_rig_name
  , dst_division_id
  , dst_division_name
  , dst_property_name
  , dst_property_type
  , dst_afe
  , dst_rig_name
  , M.CATEGORY_NAME
  , item_id
  , item_name
  , quantity
  , created_by, ticket_number
FROM transactions.tables m
WHERE not CATEGORY_ID IN ('1294','1295','1337') 
  AND MASTER_PROPERTY NOT LIKE '%products%' 
  AND MASTER_PROPERTY NOT LIKE '%TEST%' 
  and transaction_dt = trunc(sysdate) - 1
order by transaction_type, src_property_type, src_property_name

Ответы [ 2 ]

0 голосов
/ 09 июля 2019

Обновлен регистр:

case when transaction_type in ('Delivery','Transfer') and quantity<0 then 'Duplicate' else transaction_type end TRANSACTION_TYPE_USE

Затем я отфильтровал дубликаты, как только этот скрипт был добавлен в мой отчет Crystal.

Спасибо!

0 голосов
/ 09 июля 2019

Как насчет этого?

with data(trans_type, qty) as (
  select 'Used',-1 from dual union all
  select 'Delivery',-1 from dual union all
  select 'Transfer',-1 from dual union all
  select 'Used',1 from dual union all
  select 'Delivery',1 from dual union all
  select 'Transfer',1 from dual
)
select * from data
where (trans_type = 'Used' or qty > 0);

TRANS_TY        QTY
-------- ----------
Used             -1
Used              1
Delivery          1
Transfer          1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...