【发布时间】:2021-05-12 20:46:25
【问题描述】:
我有以下问题。如何将 invoice_dt 设置在 2021 年 1 月 1 日至 2021 年 5 月 31 日之间...输出显示所有日期范围。我将如何设置它以在日期范围内根据 pay_cte 查找重复?
with pay_cte( vendor_id,invoice_id, pay_amt,pay_cnt ) as (
select vendor_id,invoice_id, pay_amt,count(*)
from ps_voucher
where invoice_dt between '01-Jan-2021' and '31-May-2021'
group by vendor_id,invoice_id, pay_amt
having count(*)>1)
select t.vendor_id, t.voucher_id,t.INVOICE_ID,t.gross_amt, t.INVOICE_DT
from ps_voucher t
join pay_cte p on t.vendor_id=p.vendor_id and t.invoice_id = p.invoice_id
and t.gross_amt=p.pay_amt
【问题讨论】:
-
样本数据和期望的结果在这里会有很长的路要走。
-
invoice_dt的数据类型是什么? -
您加入的列不是唯一标识符,因为您将它们分组。因此,当您使用它们连接回原始表时,您将获得符合连接子句的所有行。不再过滤日期列。
-
您的样本数据在哪里? ps_voucher 中可能有匹配的行(您的加入条件)超出该范围。
标签: sql oracle common-table-expression