我无法按最大日期按行显示产品数量
这是“产品”表
SupplierCode Reference Qty
1000 M131200 500
1111 M131200 1
1000 M131300 200
1111 M131300 500
这是“订单”表
SupplierCode Reference OrderDate
1000 M131200 2019-01-09 00:00:00.000
1111 M131200 2018-07-25 00:00:00.000
1000 M131200 2019-01-15 00:00:00.000
1000 M131200 2019-01-21 00:00:00.000
1111 M131200 2019-01-02 00:00:00.000
1111 M131300 2019-02-05 00:00:00.000
1000 M131300 2019-03-05 00:00:00.000
1000 M131300 2019-04-07 00:00:00.000
1111 M131300 2019-02-04 00:00:00.000
我需要做的是返回每个引用的产品数量,以便我可以连接到另一个表。问题是供应商不止一个,因此引用会在我的最终查询中产生重复的结果,因为一个引用可以有多个供应商。
我设法获取每个供应商的最新日期
SELECT
O.SupplierCode,
O.Reference,
MAX(OrderDate) AS Date
FROM
Orders O
GROUP BY
O.SupplierCode,
O.Reference
返回此
SupplierCode Reference Date
1000 M131200 2019-01-21 00:00:00.000
1111 M131200 2019-01-02 00:00:00.000
1000 M131300 2019-04-07 00:00:00.000
1111 M131300 2019-02-05 00:00:00.000
所以现在我需要为每个参考文献选择最新日期的供应商
例如,我要寻找的最终输出是这个,当然,加入两个表的速度更快:
SupplierCode Reference Qty Date
1000 M131200 500 2019-01-21 00:00:00.000
1000 M131300 200 2019-04-07 00:00:00.000
但是我不确定如何在where
子句中进行此日期验证
答案 0 :(得分:2)
您可以使用ROW_NUMBER()为每个引用选择最新的供应商:
with maxOrder as
(
select
*
, ROW_NUMBER() OVER (PARTITION BY Reference ORDER BY OrderDate DESC) as number
from Orders
)
Select
o.SupplierCode
,o.Reference
,p.Qty
,o.OrderDate
from maxOrder as o
join Products as p
on p.SupplierCode = o.SupplierCode
and p.Reference = o.Reference
where o.number = 1