Oracle11g Oracle SQL条件查询

Oracle11g Oracle SQL条件查询,oracle11g,case,conditional-statements,Oracle11g,Case,Conditional Statements,我有一个表格作为项目_LOC,格式如下: ITEM LOC UNIT RETAIL 100 KS 20 101 JS 22 102 RS null 我需要找到零售部, 如果存在loc:RS的记录,则应获得该记录。 如果它不存在于RS中,那么它应该在JS中找到。 如果JS不存在,那么应该为KS找到它 如果KS的值不存在,它应该返回NULL 如何处理这种情况?您可以通过一个子选择来完成此操作,该子选择将LOC转换为按优先级

我有一个表格作为项目_LOC,格式如下:

ITEM    LOC    UNIT RETAIL  
100     KS       20
101     JS       22 
102     RS      null
我需要找到零售部, 如果存在loc:RS的记录,则应获得该记录。 如果它不存在于RS中,那么它应该在JS中找到。 如果JS不存在,那么应该为KS找到它

如果KS的值不存在,它应该返回NULL


如何处理这种情况?

您可以通过一个子选择来完成此操作,该子选择将LOC转换为按优先级排序的数字,并获取当前的最佳数值:

挑选* 来自第_项LOC 其中解码器loc,'RS',1,'JS',2,'KS',3,null= 选择mindecodeLOC、RS、1、JS、2、KS、3、4 来自第_项LOC 请注意,如果这些LOC代码都不存在,您将得到一个空结果集。 如果存在重复代码,则可以有多个结果