Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SELECT子句中的Oracle SQL CASE语句不起作用_Sql_Oracle_Oracle11g - Fatal编程技术网

SELECT子句中的Oracle SQL CASE语句不起作用

SELECT子句中的Oracle SQL CASE语句不起作用,sql,oracle,oracle11g,Sql,Oracle,Oracle11g,运行下面的CASE语句时,我得到的结果好坏参半 我想做的是根据 1) 零件号的一部分和 2) 与零件号关联的人工代码的一部分 该声明似乎适用于那些被称为“替换”的产品,但当零件号和/或人工代码混合使用时,则不适用。在大多数情况下,它们最终成为“其他” 案例陈述按维修重要性的顺序编写。我的结构有问题吗?我问的问题不对吗 (CASE WHEN (D.PART_NO LIKE '3102%') AND (F.OPER_CD = 'JD01AA') THEN 'REPLACED' WHEN (D.

运行下面的CASE语句时,我得到的结果好坏参半

我想做的是根据

1) 零件号的一部分和 2) 与零件号关联的人工代码的一部分

该声明似乎适用于那些被称为“替换”的产品,但当零件号和/或人工代码混合使用时,则不适用。在大多数情况下,它们最终成为“其他”

案例陈述按维修重要性的顺序编写。我的结构有问题吗?我问的问题不对吗

(CASE 
 WHEN (D.PART_NO LIKE '3102%') AND (F.OPER_CD = 'JD01AA') THEN 'REPLACED'
 WHEN (D.PART_NO LIKE '310C%') AND (F.OPER_CD = 'JD01AA') THEN 'REPLACED'
 WHEN (D.PART_NO LIKE '3103%') AND (F.OPER_CD = 'JD01AA') THEN 'REPLACED'
 WHEN (D.PART_NO LIKE '310F%') AND (F.OPER_CD = 'JD01AA') THEN 'REPLACED'
 WHEN (D.PART_NO LIKE '3110%') THEN 'TCONVERT'
 WHEN (D.PART_NO LIKE '3121%') THEN 'AFR'
 WHEN (D.PART_NO LIKE '31490%') THEN 'GEAR_RDC'
 WHEN (D.PART_NO LIKE '31495%') THEN 'GEAR_RDC'
 WHEN (D.PART_NO LIKE '3170%') AND (F.OPER_CD = 'JD48AA') THEN 'CVALVE'
 WHEN (D.PART_NO LIKE '3834%') OR (F.OPER_CD IN ('JD64AA', 'JD65AA', 'JD66AA')) THEN 'DSEAL'
 WHEN (D.PART_NO LIKE '3137%') OR (F.OPER_CD ='JD88AA') THEN 'TCSEAL'
 WHEN (D.PART_NO LIKE '3311%') OR (F.OPER_CD ='JD88AA') THEN 'TCSEAL'
 WHEN (D.PART_NO LIKE '3170%') AND (F.OPER_CD = 'JD48AA') THEN 'CVALVE'
 WHEN (D.PART_NO LIKE '31490%') THEN 'GEAR_RDC'
 WHEN (D.PART_NO LIKE '31495%') THEN 'GEAR_RDC'
 WHEN (F.OPER_CD LIKE 'NODJD%') THEN 'NDF'
 WHEN (COUNT(D.PART_NO) < '1') THEN 'REPROGM'
     ELSE ('OTHER')
     END) RPRTYP 
(案例)
当(D.零件号如“3102%”)和(F.操作CD='JD01AA')时,则“替换”
当(D.零件号如“310C%”)和(F.操作CD='JD01AA')时,则“替换”
当(D.零件号如“3103%”)和(F.操作CD='JD01AA')时,则“替换”
当(D.部件号如“310F%”)和(F.操作CD='JD01AA')时,则“替换”
当(D.PART_NO类似于“3110%”)时,则“t转换”
当(D.PART_NO类似于“3121%”)时,则为“AFR”
当(D.零件号如“31490%”时,则为“齿轮”
当(D.PART_NO像'31495%')然后是'GEAR_RDC'
当(D.PART_NO像'3170%')和(F.OPER_CD='JD48AA')时,则为'CVALVE'
当(D.PART_NO LIKE'3834%')或(F.OPER_CD IN('JD64AA','JD65AA','JD66AA')时,则为'DSEAL'
当(D.PART_NO LIKE'3137%')或(F.OPER_CD='JD88AA')时,则为'TCSEAL'
当(D.PART_NO LIKE'3311%')或(F.OPER_CD='JD88AA')时,则为'TCSEAL'
当(D.PART_NO像'3170%')和(F.OPER_CD='JD48AA')时,则为'CVALVE'
当(D.零件号如“31490%”时,则为“齿轮”
当(D.PART_NO像'31495%')然后是'GEAR_RDC'
当(F.OPER_CD像'NODJD%')然后是'NDF'
当(计数(D.零件号)<'1')时,则“重新编程”
ELSE(‘其他’)
结束)RPRTYP

有人能帮忙吗?

一些示例数据和预期输出会很有帮助。你也可以发布你的整个查询吗?这里有一个
count()
,因此应该有一个
分组依据
。大概没有一个条件与您的数据匹配。因此,
ELSE
子句返回的是
'OTHER'
。在同一查询中,比较值
D.PART\u NO
COUNT(D.PART\u NO)
。这在甲骨文中怎么可能呢?是否存在或不存在< <代码> > >组,也就是“<代码> D.PARTIONNO/<代码>和<代码> f.Office C < /C> >您认为它显示了错误的结果吗?此外,对于<代码> 31490 ,<代码> 31495 和<代码> 3170 <代码>的情况不必要地重复。请清理“案例”陈述。