ORACLE中WHERE语句中的IF / ELSE [英] IF/ELSE in WHERE statement in ORACLE
本文介绍了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屋!
查看全文