首先明确一点,case when 是一个函数,而不是一个条件语句,语法如下;
CASE...... WHEN......THEN......ELSE......END
具体使用上,既可以哟关于处理返回结果集,也可以在条件语句中使用,示例如下:
1、用于处理返回结果集
SELECT au_fname, au_lname,
CASE state
WHEN 'BJ' THEN '北京'
WHEN 'SH' THEN '上海'
WHEN 'SD' THEN '山东'
ELSE ‘未命名’
END AS StateName
FROM pubs.dbo.authors
ORDER BY au_lname
更复杂一些的写法如下:
case When to_char((Select max(NVL(JDYSSJ,'')) From BO_PM_XMJDYS_P
Where PNO=BO_PM_XMLX_PP.PNO),'yyyyMMdd')>=to_char(NVL(XMJZSJ,''),'yyyyMMdd')
then '延期' else '正常' end as XMYQZT
2、用于处理条件判断,示例
select * from t1 where field1=(case when field2='xxx' then 'aaa' else 'bbb' end)