根据in子句-Oracle中相同的值顺序从数据库中选择值

根据in子句-Oracle中相同的值顺序从数据库中选择值,oracle,Oracle,我有一个查询来获取和计算相应的值。要获取我在子句中传递的值,如下所示 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'); 但它给我的记录是每个盒子、每个托盘,然后是每个设备的

我有一个查询来获取和计算相应的值。要获取我在子句中传递的值,如下所示

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');
但它给我的记录是每个盒子、每个托盘,然后是每个设备的数据。 它的顺序与第条不同。 在Oracle中是否有任何方法可以按与in子句中相同的顺序获取记录

问候
桑吉塔

当然;应用
orderby
子句,该子句关注
WHERE
子句中的顺序。下面是一个基于Scott模式的示例:

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)

wehere子句只是一个过滤器,它不会被分类。请参阅Littlefoots,答案很好。它也可以作为一个案例而不是解码。
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;