2014-10-20 114 views
0

我想为以下语句使用CASE语句,但它没有得到期望的结果。带有CASE的SQL语句在没有值时

我想要的是如果没有基于哪里的条件值,那么我想返回'N'作为结果。

SELECT CASE WHEN val IS NULL THEN 'N' else val END 
from (select nvl(is_expired,'x')val 
    FROM test 
WHERE product_no = '12DF') 

当product_no 12DF不存在于表中时,我想返回一个值而不是空值或空值。

表结构指定here

回答

3

如果没有产品的12DF',那么你不会从你的子查询中的行。

我不太清楚你想解决哪个问题。 如果你将它嵌入到程序中,因为你可以得到一个包含多行的结果集,那么该代码也应该能够处理一个空集。 如果您希望结果集中有零个或一行,则可以使用类似max的聚合函数。

select nvl(max(is_expired), 'N') 
    from test 
where product_no = '12DF'; 
+0

Ronald,感谢您指点正确的解决方案,非常感谢。 – user75ponic 2014-10-21 05:12:24