【发布时间】:2021-10-25 15:16:37
【问题描述】:
我正在尝试根据下面给出的某些条件获取一些记录 -
WITH temp_data AS(SELECT t1.acc_name,t1.f_data,t1.EXPIRY_DATE,t1.f_days
FROM t1_table t1, t2_table t2 where
t1.acc_name = t2.acc_name
AND t2.FLAG = 2)
SELECT tmp_data.acc_name
FROM temp_data tmp_data ,t3_table t3 where
( tmp_data.f_data = 'N' AND tmp_data.EXPIRY_DATE <= SYSDATE)
OR
( tmp_data.f_data = 'Y' AND tmp_data.acc_name = t3.acc_name
AND
(
(t3.f_interval_period <>-1 AND t3.f_DATE <= SYSDATE)
OR (t3.f_interval_period =-1 AND t3.f_DATE+t1.f_days <= SYSDATE)
))
当 tmp_data.f_data = 'N' AND tmp_data.EXPIRY_DATE
WITH temp_data AS(SELECT t1.acc_name,t1.f_data,t1.EXPIRY_DATE,t1.f_days
FROM t1_table t1, t2_table t2 where
t1.acc_name = t2.acc_name
AND t2.FLAG = 2)
SELECT tmp_data.acc_name
FROM temp_data tmp_data where
( tmp_data.f_data = 'N' AND tmp_data.EXPIRY_DATE <= SYSDATE)
==> 这没有添加 t3_table 并且只提供 1 个帐户名并且工作正常, 但是将这两个 (tmp_data.f_data = 'N' , 'Y') 与 OR 合并,我没有得到预期的结果,并且相同的 account_number 会重复多次。
【问题讨论】:
标签: sql oracle common-table-expression or-operator