1

尝试将我的访问语句转换为 sql developer 并获得更多记录,然后我应该,它要求我输入 B* 的替换变量, 请查看这两个查询有人可以帮忙

在 ORACLE 中创建的查询

SELECT  
cast(vw_GE_SUMQry.year as varchar2(4)) || '-' || substr(cast(vw_GE_SUMQry.year+1 as varchar(4)),3) YEARF
gems_cmn_location.LOCATION_ENG,
vw_ge_sumqry.srce,
GEMS_CMN_INDUSTRIES.industry,
vw_gdp_currentqry.method,
vw_gdp_currentqry.current_value,
vw_GE_SUMQry.ge_expend/vw_gdp_currentqry.current_value*0.0001 AS GEGDP
FROM gems_cmn_location INNER JOIN (vw_gdp_currentqry
INNER JOIN vw_GE_SUMQry ON vw_gdp_currentqry.LOC = vw_GE_SUMQry.LOC AND vw_gdp_currentqry.YEAR = vw_GE_SUMQry.YEAR
INNER JOIN GEMS_CMN_INDUSTRIES ON vw_gdp_currentqry.IND = GEMS_CMN_INDUSTRIES.IND) 
ON gems_cmn_location = vw_gdp_currentqry.LOC
WHERE vw_gdp_currentqry.IND<>'F&B';

我需要创建的查询

 SELECT 
[GE_SUMQry].[YEAR] & "-" & Right([GE_SUMQry].[YEAR]+1,2) AS YEARF,
LOCATION.LOCATION_ENG, 
GE_SUMQry.SRCE, 
INDUSTRIES.INDUSTRY, 
[GDP_$CurrentQry].METHOD, 
[GDP_$CurrentQry].[$CURRENT], 
[ge_expend]/[$current]*0.0001 AS [GE%GDP]
FROM LOCATION INNER JOIN (([GDP_$CurrentQry] INNER JOIN GE_SUMQry ON ([GDP_$CurrentQry].LOC = GE_SUMQry.LOC) AND ([GDP_$CurrentQry].YEAR = GE_SUMQry.YEAR)) INNER JOIN INDUSTRIES ON [GDP_$CurrentQry].IND = INDUSTRIES.IND) ON LOCATION.LOC = [GDP_$CurrentQry].LOC
WHERE ((([GDP_$CurrentQry].IND)<>"F&B"));
4

1 回答 1

0

Oracle&用作绑定变量的占位符,因此需要对其进行转义。您可以SET ESCAPE ON先调用,然后更改'F&B''F\&B',或者如果无法调用 SET,则可以使用'F' || '&' || 'B'

所以,要么:

SET ESCAPE ON;
SELECT  
cast(vw_GE_SUMQry.year as varchar2(4)) || '-' || substr(cast(vw_GE_SUMQry.year+1 as varchar(4)),3) YEARF
gems_cmn_location.LOCATION_ENG,
vw_ge_sumqry.srce,
GEMS_CMN_INDUSTRIES.industry,
vw_gdp_currentqry.method,
vw_gdp_currentqry.current_value,
vw_GE_SUMQry.ge_expend/vw_gdp_currentqry.current_value*0.0001 AS GEGDP
FROM gems_cmn_location INNER JOIN (vw_gdp_currentqry
INNER JOIN vw_GE_SUMQry ON vw_gdp_currentqry.LOC = vw_GE_SUMQry.LOC AND      vw_gdp_currentqry.YEAR = vw_GE_SUMQry.YEAR
INNER JOIN GEMS_CMN_INDUSTRIES ON vw_gdp_currentqry.IND = GEMS_CMN_INDUSTRIES.IND) 
ON gems_cmn_location = vw_gdp_currentqry.LOC
WHERE vw_gdp_currentqry.IND<>'F&B';

或者:

SELECT  
cast(vw_GE_SUMQry.year as varchar2(4)) || '-' || substr(cast(vw_GE_SUMQry.year+1 as varchar(4)),3) YEARF
gems_cmn_location.LOCATION_ENG,
vw_ge_sumqry.srce,
GEMS_CMN_INDUSTRIES.industry,
vw_gdp_currentqry.method,
vw_gdp_currentqry.current_value,
vw_GE_SUMQry.ge_expend/vw_gdp_currentqry.current_value*0.0001 AS GEGDP
FROM gems_cmn_location INNER JOIN (vw_gdp_currentqry
INNER JOIN vw_GE_SUMQry ON vw_gdp_currentqry.LOC = vw_GE_SUMQry.LOC AND      vw_gdp_currentqry.YEAR = vw_GE_SUMQry.YEAR
INNER JOIN GEMS_CMN_INDUSTRIES ON vw_gdp_currentqry.IND = GEMS_CMN_INDUSTRIES.IND) 
ON gems_cmn_location = vw_gdp_currentqry.LOC
WHERE vw_gdp_currentqry.IND<>'F' || '&' || 'B';
于 2013-07-26T16:57:40.193 回答