ORACLE中WHERE语句中的IF / ELSE [英] IF/ELSE in WHERE statement in ORACLE

查看:2494
本文介绍了ORACLE中WHERE语句中的IF / ELSE的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

您好,



我正在尝试将IF / ELSE或CASE / WHEN应用于我的选择语句,但我没有成功。有人可以帮我怎么写这个吗?



我的查询是:

Hello,

I am trying to apply IF/ELSE or CASE/WHEN to my select statement but I am not successful. Can someone help me how to write this?

My query is:

SELECT P.*
FROM PTABLE P, MTABLE M, NTABLE N
WHERE 
    CASE 
       WHEN P.MATERIAL IS NOT NULL THEN M.MATERIAL = N.MATERIAL
       WHEN P.MATERIAL IS NULL THEN M.MATERIAL = P.MATERIAL
    END



我尝试了但是我在该查询中收到错误。作为一种替代方案,我尝试应用其他但没有好处。

所以我的陈述应该类似于


I tried that but I get error on that query. As an alternative I tried appliying if else but no good.
So my statement should be something like

IF P.MATERIAL IS NOT NULL THEN
M.MATERIAL = N.MATERIAL 
ELSE 
M.MATERIAL = P.MATERIAL



提前致谢


Thanks in advance

推荐答案

试试这个,

Try This,
SELECT P.*
FROM PTABLE P
LEFT JOIN MTABLE M ON P.MATERIALID = M.MATERIALID
LEFT JOIN NTABLE R ON P.MATERIALID = N.MATERIALID
WHERE
    M.MATERIAL = CASE WHEN P.MATERIAL IS NOT NULL THEN N.MATERIAL ELSE P.MATERIAL END



快乐编码!

:)


Happy Coding!
:)


嗨...



使用带有解码功能的查询



Hi...

Use this Query with Decode function

SELECT P.*
FROM PTABLE P,MTABLE M,NTABLE R
WHERE P.MATERIALID = M.MATERIALID
  AND P.MATERIALID = N.MATERIALID
  AND P.MATERIAL = DEOCDE(P.MATERIAL,NULL,P.MATERIAL,N.MATERIAL)







如果您有任何澄清,请不要犹豫联系我。谢谢。




If you have any clarification,please don''t hesitate to contact me. Thank you.


这篇关于ORACLE中WHERE语句中的IF / ELSE的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆