当前位置: 代码迷 >> Sql Server >> SWITCH判断有关问题
  详细解决方案

SWITCH判断有关问题

热度:41   发布时间:2016-04-24 09:22:10.0
SWITCH判断问题在线等!
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 
  相关解决方案