Mysql 如果箱子内有条件
我正在将一些MySQL 5.0函数转换为Oracle 11g 我需要将Mysql 如果箱子内有条件,mysql,sql,oracle,oracle11g,Mysql,Sql,Oracle,Oracle11g,我正在将一些MySQL 5.0函数转换为Oracle 11g 我需要将IF放在一个案例中,但得到一个错误(缺少右括号) 这是我的密码 SELECT SUM( CASE PTIPO WHEN 0 THEN (SELECT IF(A.NT = 0) THEN A.VALOR ELSE 0 END IF FROM DUAL) WHEN 1 THEN (SELECT IF(A.NT = 1) THEN A.VALOR ELSE 0 END IF FROM DUAL)
IF
放在一个案例中,但得到一个错误(缺少右括号)
这是我的密码
SELECT SUM(
CASE PTIPO
WHEN 0 THEN (SELECT IF(A.NT = 0) THEN A.VALOR ELSE 0 END IF FROM DUAL)
WHEN 1 THEN (SELECT IF(A.NT = 1) THEN A.VALOR ELSE 0 END IF FROM DUAL)
WHEN 2 THEN (SELECT IF(A.NT = 1) THEN A.VALOR ELSE -A.VALOR END IF FROM DUAL)
END)
INTO nresp
FROM mov_caja a
JOIN enc_movp b ON a.docid = b.docid
JOIN c_caja c ON a.cajaid = c.cajaid
WHERE c.cajaid
IF/ELSE
用于函数和准备语句内部的流控制,而不是用于在单个语句中组合条件
实际上,您只需要使用另一种语法格式CASE将另一个CASE
嵌套在其中,然后
:
您可以将其改写为:
SELECT SUM(
CASE
WHEN PTIPO = 0 and A.NT = 0 THEN A.VALOR
WHEN PTIPO = 0 and A.NT <> 0 THEN 0
WHEN PTIPO = 1 and A.NT = 1 THEN A.VALOR
WHEN PTIPO = 1 and A.NT <> 1 THEN 0
WHEN PTIPO = 2 and A.NT = 1 THEN A.VALOR
WHEN PTIPO = 2 and A.NT <> 1 THEN -A.VALOR
END)
INTO nresp
FROM mov_caja a
JOIN enc_movp b ON a.docid = b.docid
JOIN c_caja c ON a.cajaid = c.cajaid
WHERE c.cajaid
选择SUM(
案例
当PTIPO=0且A.NT=0时,则A.VALOR
当PTIPO=0且A.NT为0时,则为0
当PTIPO=1且A.NT=1时,则A.VALOR
当PTIPO=1且A.NT为1时,则为0
当PTIPO=2且A.NT=1时,则A.VALOR
当PTIPO=2和A.NT 1时,则-A.VALOR
(完)
进入NREP
来自mov_caja a
在a.docid=b.docid上连接enc_movp b
在a.cajaid=c.cajaid上加入c_caja c
卡贾德在哪里
De nada,亚历杭德罗。你的父母是谁
SELECT SUM(
CASE
WHEN PTIPO = 0 and A.NT = 0 THEN A.VALOR
WHEN PTIPO = 0 and A.NT <> 0 THEN 0
WHEN PTIPO = 1 and A.NT = 1 THEN A.VALOR
WHEN PTIPO = 1 and A.NT <> 1 THEN 0
WHEN PTIPO = 2 and A.NT = 1 THEN A.VALOR
WHEN PTIPO = 2 and A.NT <> 1 THEN -A.VALOR
END)
INTO nresp
FROM mov_caja a
JOIN enc_movp b ON a.docid = b.docid
JOIN c_caja c ON a.cajaid = c.cajaid
WHERE c.cajaid