gpt4 book ai didi

sql - 在单个查询中通过 oracle 根据优先级获取单个记录

转载 作者:搜寻专家 更新时间:2023-10-30 22:26:35 25 4
gpt4 key购买 nike

我在 Oracle SQL 中有一个表,如下所示。

  Account_Id     Account_No              BS               STATUS
1 10 V ACTV
2 11 S DIS
3 12 E NOTACTV
4 10 S DIS
5 12 E ACTV
6 12 V ACTV

我需要获得具有以下优先级的帐号(一条记录)。

 1) BS = V && STATUS = ACTV
2) BS = S && STATUS = ACTV
3) BS = E && STATUS = ACTV
4) BS = V && STATUS = NOTACTV
5) BS = S && STATUS = NOTACTV
6) BS = E && STATUS = NOTACTV
7) BS = V && STATUS = DIS
8) BS = S && STATUS = DIS
9) BS = E && STATUS = DIS

我尝试对 V 使用三个 sql 查询并检查状态 ACTV 和 NOTACTV。我想在一个 sql 查询中获取数据以优化它。

如何做到这一点?

最佳答案

我想你想要:

select t.*
from (select t.*
from t
order by (case status when 'ACTV' then 1 when 'NOTACTIV' then 2 WHEN 'DIS' then 3 else 4 end),
(case BS when 'V' then 1 when 'S' then 2 when 'E' then 3 else 4 end)
) t
where rownum = 1;

如果您使用的是 Oracle 12c+,则可以使用fetch first,不需要子查询。

Here是一个工作版本。

关于sql - 在单个查询中通过 oracle 根据优先级获取单个记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50624808/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com