有一个访问查询,我正在尝试转换为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';
答案 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';