我敢肯定这是一个简单的答案,但我对此并不陌生,因此无法以正确的方式询问Google或其他任何问题。
我有一个查询,多次使用相同的输入,我需要知道的是如何仅一次使用一次才能获得输入?
即下面的最后一行至少被使用了五次,而我当前的格式要求它被重复五次
现在已部分修复(谢谢Kaushik Nayak和您的回答),但无法正常工作。我认为这是我遇到问题的地方,对于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
答案 0 :(得分:0)
您可以使用单个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.
)