繁体   English   中英

"如何返回具有相同等级的单个 orderid?"

[英]How do I return single orderid having same rank?

我有以下输出:

订单号 时间 状态 order_rank
1 10.15 制造商 1
1 10.15 发表 1
2 12.10 采摘 1
2 12.10 制造商 1

在这里,我已将订单 ID 排到最新时间并将条件放在 where 子句“where order_rank = 1”中,但我想为一个 orderjobid 返回单个条目,即对于 orderid 1 我想返回已交付状态条目对于 orderid 2,我想要 mfr 状态条目等。

这只是一个示例数据,我有超过 1000 个 orderid,如何返回相同排名的单个条目?

假设您的代码如下所示:

SELECT * FROM (
  SELECT 
     order_id, 
     time, 
     state, 
     RANK() over (partition by order_id order by time) as order_rank
  FROM VALUES
    (1,'10.15','mfr'),
    (1,'10.15','delivered'),
    (2,'12.10','picked'),
    (2,'12.10','mfr')
    v(order_id, time, state)
)
WHERE order_rank = 1;

扩展你的排名,不仅包括时间,还包括状态的表达,比如。

Order time desc, 
     case state when 'picked' then 1
                When 'mfr' then 2
                When 'delivered' then 3
                ...
     End asc

你可以尝试row_number() over (partition by Orderid order by State)并选择第一个

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM