Один вход несколько запросов - PullRequest
0 голосов
/ 06 марта 2019

Я уверен, что это такой простой ответ, но я новичок в этом вопросе и не смог ни задать вопрос Google, ни что-нибудь правильно.

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

Исправлено частичное исправление (спасибо Каушику Наяку и вашему ответу), но оно работает неправильно.Я думаю, что несколько объединений, где у меня есть проблема, первоначальный выбор значения v.dt выглядит нормально

FROM Bmtrread Rd 
INNER JOIN CUSTIMA.BSVCHRGE
ON Rd.CUST_REF = CUSTIMA.BSVCHRGE.U##CUST_REF
WHERE EXISTS
(SELECT *
FROM Bsvchrge Ch t cross join v
WHERE Rd.CUST_REF     = Ch.U##CUST_REF
AND Ch.U##TARIFF_CODE = 'TB12'
AND Ch.CHG_PERCENT    = 1
AND Rd.CURREAD_DT    >= v.dt

1 Ответ

0 голосов
/ 06 марта 2019

Вы можете использовать одиночное предложение with, чтобы получить желаемое значение, а затем использовать столбец везде в предложении select или where

with v(dt)
AS
(
select to_date('&Start_Read_Date_DD_MM_YYYY','DD/MM/YYYY') from dual
)
select ..  --your select statement
..
FROM Bmtrread Rd 
INNER JOIN CUSTIMA.BSVCHRGE
ON Rd.CUST_REF = CUSTIMA.BSVCHRGE.U##CUST_REF
cross join v --add here
WHERE EXISTS
(SELECT *
FROM Bsvchrge Ch 
WHERE Rd.CUST_REF     = Ch.U##CUST_REF
AND Ch.U##TARIFF_CODE = 'TB12'
AND Ch.CHG_PERCENT    = 1
AND Rd.CURREAD_DT    >= v.dt --replace it with v.dt in all places.
) 
...