Где Условие Случай

#sql #oracle

Вопрос:

 SELECT shipment_line_id,
       Putaway 
FROM (
  SELECT rcv.shipment_line_id,
         NVL ( fnt.TITLE, ' 0 ' ) Putaway
  FROM 
         RCV_TRANSACTIONS rcv,
         RCV_SHIPMENT_HEADERS rcvh,
         FND_ATTACHED_DOCUMENTS FND,
         FND_DOCUMENTS_TL  FNT
  WHERE 
         rcv.transaction_type IN ('DELIVER')
  and    rcvh.SHIPMENT_HEADER_ID = rcv.SHIPMENT_HEADER_ID
  and    fnd.DOCUMENT_ID = fnt.DOCUMENT_ID 
  and    fnt.LANGUAGE = 'US'
  and    TO_CHAR(fnd.PK1_VALUE) =  NVL ( TO_CHAR(rcvh.HEADER_INTERFACE_ID) ,= TO_CHAR(rcv.INTERFACE_TRANSACTION_ID  ) 
 

Я хотел бы, если fnd.PK1_VALUE = rcvh.header_interface_id вернет значение fnd.pk1_value
, а если не вернет значение fnd.PK1_VALUE = rcv.INTERFACE_TRANSACTION_ID, В этом я не могу получить это

Комментарии:

1. У вас есть синтаксические ошибки, в том числе как дополнительные = внутри NVL и отсутствующие ) для внешнего запроса.

2. Вам действительно нужно использовать TO_CHAR все три значения?

Ответ №1:

Я думаю, что то, что вы здесь ищете, можно решить с помощью DECODE . Вот условие, которое вы можете использовать:

 AND DECODE(TO_CHAR(fnd.pk1_value), 
           TO_CHAR(rcvh.header_interface_id), 1,
           TO_CHAR(rcv.interface_transaction_id), 1,
           0) = 1