Выберите значения из базы данных на основе того же порядка значений в предложении IN -Oracle - PullRequest
0 голосов
/ 07 декабря 2018

У меня есть запрос на выборку и вычисление значений соответственно.Чтобы получить значение, которое я передаю значения в предложении IN, как показано ниже,

SELECT *
FROM SQ_HANDLING_TIME_T
WHERE QSC_CODE   = '001'
AND BU_TYPE_RULE = 'STO'
AND DEV_TYPE     = 'NC'
AND FIELD_NAME IN('NC_LQ2_PER_PALLET','NC_LQ2_PER_BOX','NC_LQ2_PER_APPLIANCES');

Но это дает мне записи в виде данных perbox, perpallet и затем для каждого устройства.Это не происходит в том же порядке, что и в пункте.Есть ли способ в Oracle, где я могу получить записи в том же порядке, как в пункте In.

С уважением Sangeetha

Ответы [ 2 ]

0 голосов
/ 07 декабря 2018
SELECT *
FROM SQ_HANDLING_TIME_T
WHERE QSC_CODE     = '001'
  AND BU_TYPE_RULE = 'STO'
  AND DEV_TYPE     = 'NC'
  AND FIELD_NAME IN ('NC_LQ2_PER_PALLET','NC_LQ2_PER_BOX', 
                     'NC_LQ2_PER_APPLIANCES');
ORDER BY
    CASE FIELD_NAME
        WHEN 'NC_LQ2_PER_PALLET'     THEN 1
        WHEN 'NC_LQ2_PER_BOX'        THEN 2
        WHEN 'NC_LQ2_PER_APPLIANCES' THEN 3
    END;
0 голосов
/ 07 декабря 2018

Конечно;применить условие ORDER BY, которое заботится о порядке в предложении WHERE.Вот пример, основанный на схеме Скотта:

SQL> select deptno, ename, job, sal
  2  from emp
  3  where job in ('MANAGER', 'CLERK', 'SALESMAN')
  4  order by decode(job, 'MANAGER', 1, 'CLERK', 2, 'SALESMAN', 3);

    DEPTNO ENAME      JOB              SAL
---------- ---------- --------- ----------
        10 CLARK      MANAGER         2450
        20 JONES      MANAGER         2975
        30 BLAKE      MANAGER         2850
        30 JAMES      CLERK            950
        20 SMITH      CLERK            800
        10 MILLER     CLERK           1300
        30 TURNER     SALESMAN        1500
        30 WARD       SALESMAN        1250
        30 ALLEN      SALESMAN        1600
        30 MARTIN     SALESMAN        1250

10 rows selected.

SQL>

В вашем случае это будет

...
ORDER BY DECODE(field_name, 'NC_LQ2_PER_PALLET', 1,
                            'NC_LQ2_PER_BOX', 2,
                            'NC_LQ2_PER_APPLIANCES', 3)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...