根据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;