我需要表WO
和PO
。这两个表都可以通过WO#
字段进行链接。
WO字段
WO#
WO_Date
PO字段
PO#
PO_Date
WO#
在PO表中,有几个PO#
链接到同一个WO#
。
我需要一个返回以下字段的查询,但需要注意的是,我应该只返回每WO#
一条记录,并加入唯一一条来自PO表中匹配记录的日期最长的PO#
WO# WO_Date PO# PO_Date
(所有PO#
匹配相同WO#
的最高日期)
我正在使用MS Query从Oracle DB中读取数据。
答案 0 :(得分:2)
试试这个:
SELECT
*
FROM WO
JOIN (SELECT
*,
ROW_NUMBER() over (PARTITION BY WO# ORDER BY WO_Date DESC) AS RowNo
FROM PO
) PO
ON PO.WO# = WO.WO#
WHERE PO.RowNo = 1
如果您可能有很多记录,我还会在INDEX
上建议WO_Date
。
如果您可能LEFT JOIN
没有相应的WO's
条记录,则可能需要使用PO
,并将WHERE CLAUSE
调整为WHERE PO.RowNo = 1 OR PO.WO# IS NULL
}。
答案 1 :(得分:0)
如果PO#是顺序的,那么最高PO#匹配最高日期:
SELECT wo.WO#. WO_Date, MAX(PO#) "PO#", MAX(PO_Date) "PO_Date"
FROM [WO]
LEFT JOIN [PO] on wo.WO# = po.WO#
GROUP BY wo.WO#, WO_Date
答案 2 :(得分:0)
听起来你只需要使用子查询加入:
SELECT *
FROM WO
JOIN (SELECT PO#, MAX(PO_Date) PO_DATE
FROM PO
GROUP BY PO#
)PO
ON WO.WO# = PO.PO#
答案 3 :(得分:0)
Select * From WO w
left Join PO p
On p.WO# = w.WO#
And p.PO_Date =
(Select Max(PO_Date)
From PO
Where WO# = w.WO#)