mysql – 如果条件里面的情况

我正在将一些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)
      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 WHEN< condition>嵌套另一个CASE.然后< value>:

SELECT SUM(
    CASE PTIPO
      WHEN 0 THEN (CASE WHEN (A.NT = 0) THEN A.VALOR ELSE 0 END)
      WHEN 1 THEN (CASE WHEN (A.NT = 1) THEN A.VALOR ELSE 0 END)
      WHEN 2 THEN (CASE WHEN (A.NT = 1) THEN A.VALOR ELSE -A.VALOR END)
    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

转载注明原文:mysql – 如果条件里面的情况 - 代码日志