SELECT rtrim(ltrim(备案号)) 备案号,商品编码,rtrim(ltrim(货物名称)) 货物名称,rtrim(ltrim(法定数量)) 法定数量,
rtrim(ltrim(法定单位)) 法定单位,right(rtrim(ltrim(产地)),3) 产地,rtrim(ltrim(单价)) 单价,rtrim(ltrim(成交总价)) 成交总价,
left(rtrim(ltrim(币制和征免)),3) 币制,ltrim(right(rtrim(ltrim(币制和征免)),4)) 征免,
rtrim(ltrim(版本)) 版本
FROM OpenDataSource('Microsoft.Jet.OLEDB.4.0','Data Source="D:/美泰/出口报关单.xls";
User ID=Admin;Password=;Extended properties=Excel 4.0')...非一般贸易$ where 商品编码 is not null
SWITCH(
left(rtrim(ltrim(币制和征免)),3)='502','USD',
left(rtrim(ltrim(币制和征免)),3)='110','HKD',
left(rtrim(ltrim(币制和征免)),3)='116','JPY',
left(rtrim(ltrim(币制和征免)),3)='300','EUR',
true,TRADE_CURR
) AS 币制,
我想判断币制,如果是USD就显示502,但我这段SWITCH代码加进去执行后总提示"=号附近语法错误",SWITCH如果直接用列名来判断就正常执行,请教以上怎么处理一下才能正常执行.
------解决思路----------------------
使用case when转换一下:
case left(rtrim(ltrim(币制和征免)),3) when '502' then 'USD'
when '110' then 'HKD'
when '116' then 'JPY'
when '300' then 'EUR'
end
------解决思路----------------------
sqlserver 没有 SWITCH 语句,只能使用 case when 或 if 来处理分枝。
------解决思路----------------------
哪来的switch,这是java的吧
用if begin ...... end else begin .... end
或者case when then end
------解决思路----------------------
--没看懂你的描述,具体可以用case when 转化下
select
rtrim(ltrim(备案号)) 备案号,商品编码,
rtrim(ltrim(货物名称)) 货物名称,
rtrim(ltrim(法定数量)) 法定数量,
rtrim(ltrim(法定单位)) 法定单位,
right(rtrim(ltrim(产地)),3)
产地,rtrim(ltrim(单价)) 单价,
rtrim(ltrim(成交总价)) 成交总价,
left(rtrim(ltrim(币制和征免)),3) 币制,
ltrim(right(rtrim(ltrim(币制和征免)),4)) 征免,
rtrim(ltrim(版本)) 版本,
( case when left(rtrim(ltrim(币制和征免)),3)='502' then 'USD'
when left(rtrim(ltrim(币制和征免)),3)='110' then 'HKD'
when left(rtrim(ltrim(币制和征免)),3)='116' then 'JPY'
else 'EUR'
end
) AS 币制 from OpenDataSource('Microsoft.Jet.OLEDB.4.0','Data Source="D:/美泰/出口报关单.xls";
User ID=Admin;Password=;Extended properties=Excel 4.0')...非一般贸易$ where 商品编码 is not null