SELECT子句中的Oracle SQL CASE语句不起作用
运行下面的CASE语句时,我得到的结果好坏参半 我想做的是根据 1) 零件号的一部分和 2) 与零件号关联的人工代码的一部分 该声明似乎适用于那些被称为“替换”的产品,但当零件号和/或人工代码混合使用时,则不适用。在大多数情况下,它们最终成为“其他” 案例陈述按维修重要性的顺序编写。我的结构有问题吗?我问的问题不对吗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
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 <代码>的情况不必要地重复。请清理“案例”陈述。