首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

case出异常,

2012-02-28 
case出错误,急!--查询下面语句报错:从数据类型nvarchar转换为float时出错。declare@temptable(companynvarc

case出错误,急!
--查询下面语句报错:从数据类型   nvarchar   转换为   float   时出错。

declare   @temp   table(company   nvarchar(50),account   nvarchar(50),keyword   nvarchar(50),cost   float)
insert   into   @temp(company,account,keyword,cost)   values( 'a ', 'r ', 'u ',1.0)
insert   into   @temp(company,account,keyword,cost)   values( 'b ', 't ', 'i ',2.0)
insert   into   @temp(company,account,keyword,cost)   values( 'c ', 'y ', 'o ',1.3)
declare   @dir   nvarchar(10),@para   nvarchar(50)
select   @dir= 'desc ',@para= 'company '
select   company,account,keyword,cost   from   @temp
order   by   case   @dir
when   'desc '   THEN   CASE   @para  
when   'company 'then   company
when   'account 'then   account
when   'keyword 'then   keyword
when   'cost 'then   cost
end
  end   desc,
  case   @dir  
when   'asc '   THEN   CASE   @para  
when   'company 'then   company
when   'account 'then   account
when   'keyword 'then   keyword
when   'cost 'then   cost
end
  end   ,
case   @dir
when   '0 '   then   1
end/**/

[解决办法]
晕,这么处理

declare @temp table(company nvarchar(50),account nvarchar(50),keyword nvarchar(50),cost float)
insert into @temp(company,account,keyword,cost) values( 'a ', 'r ', 'u ',1.0)
insert into @temp(company,account,keyword,cost) values( 'b ', 't ', 'i ',2.0)
insert into @temp(company,account,keyword,cost) values( 'c ', 'y ', 'o ',1.3)
declare @dir nvarchar(10),@para nvarchar(50)
select @dir= 'desc ',@para= 'company '
select company,account,keyword,cost from @temp
order by case @dir
when 'desc ' THEN CASE @para
when 'company 'then company
when 'account 'then account
when 'keyword 'then keyword
else ' '
end
end desc,
case when @dir= 'desc ' and @para = 'cost ' then cost
else 0
end desc,
case @dir
when 'asc ' THEN CASE @para
when 'company 'then company
when 'account 'then account
when 'keyword 'then keyword
else ' '
end
end ,
case when @dir= 'asc ' and @para = 'cost ' then cost
else 0
end

热点排行