【发布时间】:2020-04-10 04:35:55
【问题描述】:
我想过滤由 UNION 连接的这 2 个查询的结果。我想添加一条 SELECT 语句来过滤日期、ID 和名称方面的最新信息。问题是这两个查询在使用 UNION 后会产生重复,我必须避免这种情况。只需要一个最新的日期、姓名和 ID。
(select authorize_id,
purchase_authorizer_api.Get_Name(authorize_id) as "Authorizer Name",
max(date_approved) as "Last Date Approved", 'PR' as "Approval Type"
from PURCH_REQ_LINE_APPROVAL
group by authorize_id )
union
( select authorize_id,
purchase_authorizer_api.get_name(authorize_id) as "Authorizer Name",
max(date_approved) as "Last Date Approved", 'PO' as "Approval Type"
from PURCHASE_ORDER_APPROVAL
group by authorize_id )
以下是来自 2 个查询的一些示例数据:
AUTHORIZE_ID Authorizer Name Last Date Approved Approval Type
AANDR Alfredo And 2012-10-16 12:51 PR
AANDR Alfredo And 2016-09-06 13:08 PO
AESFAH Arash Esf 2017-05-26 13:28 PO
AHAMM Ahmed Hamd 2019-12-04 14:15 PO
AJAHAN Al Jaha 2012-11-02 9:56 PR
AJAHAN Al Jaha 2013-10-29 14:17 PO
我只想从中获取最新日期,这样可以避免重复。
任何帮助将不胜感激。
谢谢。
【问题讨论】:
-
提供样本数据和期望的结果。
-
严格来说
UNION的结果不能包含重复。您需要UNION ALL以防止它过滤掉重复的结果。大概您对“重复”的定义仅包括某些列 -
UNION 不会产生重复,UNION ALL 会。查看输出数据。我敢打赌这两行并不真正匹配。但我不认为这是问题所在。你到底想做什么?
-
UNION 不会重复。两个选择之间的字段批准类型不同,因此无法生成由 UNION 引起的重复。你能提供一个数据的例子吗?
-
感谢您的及时回复。