我有下面的表格,我希望根据状态为Char获得最低的交易条目。
表1(订单):
OrderID Product
------------------
1 A
2 B
3 A
表2(交易):
OrderID TransactionID Status
---------------------------------
1 1 LOW
1 2 HIGH
1 3 MID
2 4 MID
2 5 HIGH
3 6 LOW
如何获得状态最低的交易
OrderID Status
-----------------
1 LOW
2 MID
3 LOW
答案 0 :(得分:1)
一种方法使用row_number()
:
select t.*
from (select t.*,
row_number() over (partition by orderid
order by instr('LOW,MEDIUM,HIGH', status) as seqnum
from transaction t
) t
where seqnum = 1;
instr()
只是为字符串分配排序的便捷方式。它返回第一个参数中状态的位置,这在这种情况下便于排序。