kod*_*kod 5 sql sql-server-2008
我有两个表(在 SQL Server 数据库中)如下:
TblOrders
OrderID (PK)
(更多字段)TblEvents
EventID (PK)
OrderID (FK)(链接到 TblOrders 的 OrderID)
EventDate
状态
TblEvents 中的每个事件都属于 TblOrders 中的一个订单,每个事件都有一个日期和一个“状态”(一个数字代码)。一个订单可能有多个事件(至少一个)。
我需要一个 SQL 查询,为 TblOrders 中的每个 OrderID 查找其所有事件中最新事件的状态。例如:
输入表:
订单
==========
订单号
1
2
3
表事件
==========
EventID OrderID EventDate 状态
1 1 01/02/2011 4
2 1 02/02/2011 2
3 2 03/02/2011 2
4 3 03/02/2011 3
5 2 01/02/2011 1
查询结果:
订单 ID 状态
1 2
2 2
3 3
(OrderID 2 具有状态 2,因为它有两个事件,3 和 5,其中最新的是具有状态 2 的事件 3。)
我希望我已经清楚地解释了自己。我已经尝试编写查询很长时间,但找不到解决方案,因此欢迎任何帮助或提示。
select a.OrderID, e.Status
from (
select o.OrderID, max(e.EventDate) latestDate
from TblOrders o
inner join TblEvents e on o.OrderID = e.OrderID
group by o.OrderID
) a
inner join TblEvents e on e.OrderID = a.OrderID
where e.EventDate = a.latestDate
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7763 次 |
| 最近记录: |