我在下面有两个联接表。我只想从REQUIREMENTS表中获得最新日期为(3/8/2019)的一行。
**PART** **REQUIREMENTS**
ID OH TIME PART ORDER QTY DATE
5512 5 21 5512 74619 102 3/8/2019
5512 74907 25 3/10/2019
5512 74908 41 3/19/2019
5512 74243 59 3/21/2019
当我使用Min(REQUIREMENTS.DATE)时,由于ORDER和QTY表中的唯一数据,我仍然得到全部四行。我很确定我需要使用Select Top 1 [...]
,但是在弄清楚在哪里使用它时遇到了麻烦。最终,我希望返回:
PART DATE OH TIME ORDER QTY
5512 3/8/2019 5 21 74619 102
有人可以指出正确的方向(SQL Server 2012)吗?预先感谢!
丹
答案 0 :(得分:2)
您可以使用相关子查询来执行此操作:
SELECT *
FROM PART P
INNER JOIN REQUIREMENTS R ON
P.ID = R.PART
WHERE REQUIREMENTS.[DATE] = (SELECT MAX([DATE] FROM REQUIREMENTS WHERE R.PART = PART)
答案 1 :(得分:1)
您可以使用APPLY
,如果需要OUTER
或CROSS
,则可以选择。
SELECT p.ID, p.state, p.time
, r.qty, r.date1
FROM dbo.Part p
OUTER APPLY (
select top 1 qty, date
from dbo.Requirements
where part = p.ID
order by date1
) as r