#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