【Transact-SQL】求列最大值(比较特别)

原问题的联接是:http://topic.csdn.net/u/20111009/09/71ab2fe5-9c15-4670-b605-3144b84389cb.html

下面是问题描述:

例如  
列A
0.4mA
0.5mA
1.0A
1.2A
1.6A

单位为A的字段值肯定是大于单位为mA的字段值,如何求出列A中的最大值?

 

 呵呵,原来写的时候用group by分组。

下面是我的解答,是看了11楼的解答后,写出来的,11楼是通过order by来实现的,很简洁很巧妙,但是有错误,当加入一条记录,比如:'1.8mA'时,会返回'1.8mA',而不是'1.6A',我修改了一下:

 

declare  @table table(vc varchar(20))  insert into @table values('0.4mA') insert into @table values('0.5mA')  insert into @table values('1.8mA')  --增加的记录  insert into @table values('1.0A') insert into @table values('1.2A') insert into @table values('1.6A')  insert into @table values('90.6A')  --增加的记录 insert into @table values('100.6A') --后面必须得转化成数值型,                                           --否则只是按照字符串来排序的话,会返回90.6A                                           --因为字符串90.6A大于100.6A  select top 1 vc  from @table  order by (case when charindex('mA',vc)<>0                    then 'mA'                else                     'A'  --因为'mA'>'A',所以这里升序排列,'A'的排在'mA'前面            end) asc ,     --升序排列           cast(replace(                        replace(vc,'mA',''),                        'A',                        '' )                 as numeric                ) desc 


 运行结果:

100.6A


 

你可能感兴趣的:(c,table,insert)