2015-08-21 75 views
0

尝试在使用列的select语句上使用条件。我怎么能写这样的东西?关于选择的Oracle案例声明

SELECT * FROM (CASE (SELECT date_term, e_status 
          FROM HM 
          WHERE c_num = 2327 
           AND e_unique = 'something') 
         WHEN (date_term) < TRUNC(SYSDATE) 
           OR (e_status IS NOT NULL OR e_status <> 'A') 
         THEN (SELECT NULL AS A, 
            NULL AS B, 
            NULL AS C, 
            NULL AS D, 
            NULL AS E, 
            NULL AS F 
          FROM DUAL) 
         ELSE (SELECT p_val, p_type 
          FROM I_PARM T 
          WHERE c_num=2327 
          ) 
          PIVOT 
          (
          MIN(p_val) 
          FOR p_type IN ('A1' AS A, 
                'B2' AS B, 
                'C3' AS C, 
                'D4' AS D, 
                'E5' AS E, 
                'F6' AS F) 
                ) 
       END); 
  • UPDATE整个查询比我原来的一个更复杂一些。

我收到一个缺少的右括号错误。谢谢。

回答

3
SELECT case when x.a = 'something' then b.y 
     else c.z end 
FROM X JOIN Y on x.somecol = y.somecol 
JOIN Z on x.somecol = z.somecol; 

你在问题中的方式是不正确的使用案例。用适当的列名取代join条件,因为您似乎从不同的表中选取值。

+0

您也可以使用'CASE x.a WHEN'something'THEN',但不能同时在'CASE'和'when'之后进行比较。 –