Получить отдельные записи на основе приоритета через оракула в одном запросе - PullRequest
0 голосов
/ 31 мая 2018

У меня есть таблица в 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

Я пытался использоватьтри sql запросов с V и проверкой статуса ACTV и NOTACTV.Я хотел получить данные одним SQL-запросом, чтобы оптимизировать это.

Как это сделать ??

1 Ответ

0 голосов
/ 31 мая 2018

Я думаю, что вы хотите:

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 и вам не нужен подзапрос.

Здесь это рабочая версия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...