我需要3列:TOrder中的订单号、最后一个实例(最大)OrderEvent ID,我想将case/when应用于另一列(ordereventtypeid)。
订单号和最后一个实例有效。然而,为了让第三栏发挥作用,我已经筋疲力尽了。本质上,我想拉取最后一个实例
OrderEventId
对于每一个
OrderId
,但随后申请
CASE/WHEN
到那一排。下面发生的事情是,所有这些国家都出现了“T&R”延迟,而不仅仅是最后一个国家
OrderEventTypeID
是“107”。
SELECT
TOrder.OrderNumber
,(SELECT MAX (OrderEventID) FROM TOrderEvent
WHERE TOrderEvent.OrderID = TOrder.OrderID
) AS 'Delay SubQ'
,CASE
WHEN EXISTS (SELECT MAX (OrderEventID) FROM TOrderEvent
WHERE TOrderEvent.OrderID = TOrder.OrderID
AND TOrderEvent.OrderEventTypeID IN (107))
THEN 'T&R Delay'
ELSE ''
END AS 'Delay Case'
FROM
TOrder
WHERE
TOrder.CustomerId IN (14758, 25167)
AND TOrder.OrderDate >= '1/1/2024'
AND TOrder.OrderStatusID NOT IN (1206, 1208)
我尝试过使用子查询、联接等。联接时
TOrderEvent
并使用
MAX ON TOrderEvent.OrderEventID
,我为每个ordereventid得到一行,而不是每个orderid只有最后一个ordereventid实例的一行。
我使用的是带有Azure托管SQL即服务的ExpressRoute 19.0.20209。