SQL查询根据事务状态(即Char)获取OrderID,transactionID,Status

时间:2017-02-07 17:21:01

标签: sql oracle hana

我有下面的表格,我希望根据状态为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

1 个答案:

答案 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()只是为字符串分配排序的便捷方式。它返回第一个参数中状态的位置,这在这种情况下便于排序。