oracle sql developer中的IIF语句

时间:2013-07-26 17:52:52

标签: sql oracle ms-access-2007 oracle-sqldeveloper

有一个访问查询,我正在尝试转换为oracle sql dev。似乎我在 IIf(vw_gdp_currentqry.LOC ='0300','F','P')有错误。作为SRCE,可以有人帮忙吗

SELECT
vw_gdp_currentqry.YEAR, 
vw_gdp_currentqry.LOC, 
**IIf(vw_gdp_currentqry.LOC='0300','F','P') AS SRCE,** 
vw_gdp_currentqry.METHOD, 
vw_gdp_currentqry.current_value
FROM vw_gdp_currentqry
WHERE vw_gdp_currentqry.IND)='TOT';

2 个答案:

答案 0 :(得分:3)

尝试decode功能

SELECT
vw_gdp_currentqry.YEAR, 
vw_gdp_currentqry.LOC, 
decode (vw_gdp_currentqry.LOC,'0300', 'F', 'P' ) AS SRCE,
vw_gdp_currentqry.METHOD, 
vw_gdp_currentqry.current_value
FROM vw_gdp_currentqry
WHERE vw_gdp_currentqry.IND='TOT';

case语法

SELECT
vw_gdp_currentqry.YEAR,             
vw_gdp_currentqry.LOC, 
case vw_gdp_currentqry.LOC
  when '0300' then 'F'
  else 'P' 
end AS SRCE,
vw_gdp_currentqry.METHOD, 
vw_gdp_currentqry.current_value
FROM vw_gdp_currentqry
WHERE vw_gdp_currentqry.IND='TOT';

更多信息

答案 1 :(得分:0)

NULLIF和NVL2的组合。你只能在vw_gdp_currentqry.LOC为NOT NULL的情况下使用它,这是你的情况:

SELECT
vw_gdp_currentqry.YEAR, 
vw_gdp_currentqry.LOC, 
nvl2(nullif(vw_gdp_currentqry.LOC,'0300'),'P','F'),
vw_gdp_currentqry.METHOD, 
vw_gdp_currentqry.current_value
FROM vw_gdp_currentqry
WHERE vw_gdp_currentqry.IND='TOT';