select 新列=max(S01) from 表
union all
select 新列=max(S02) from 表 
union all
select 新列=max(S03) from 表
union all
select 新列=max(S04) from 表
union all
select 新列=max(S05) from 表

解决方案 »

  1.   

    --生成测试数据
    create table abc(id char(10),S01 int,S02 int,S03 int,S04 int,S05 int)
    insert into abc select '1','32','2','4','23','23'
    insert into abc select '2','58','6','4','23','23'
    insert into abc select '3','63','2','4','23','23'
    insert into abc select '4','31','2','9','23','84'
    insert into abc select '5','11','2','4','23','23'
    insert into abc select '6','39','2','4','80','23'
    insert into abc select '7','52','2','4','23','23'select * from abc---查询语句
    select max(s01) s01,max(s02) s01,max(s03) s03,max(s04) s04,max(s05) s05 
    from abc
      

  2.   

    咳~~~多谢楼上的两位,可能我开始的表达让大家误会了。想得到的数据不是一列中的最大值,而是一行数据中的最大值。ID   S01  S02  S03   S04  S05   BFi
    1     32   2    4     23   23              --->最大值为32
    2     23   4    2     2    50              --->最大值为50该怎么写语句呢?谢谢
      

  3.   

    咳~~~多谢楼上的两位,可能我开始的表达让大家误会了。想得到的数据不是一列中的最大值,而是一行数据中的最大值。ID   S01  S02  S03   S04  S05   BFi
    1     32   2    4     23   23              --->最大值为32
    2     23   4    2     2    50              --->最大值为50该怎么写语句呢?谢谢
      

  4.   

    select *,
    case when (s01>s02 and s01>s03 and s01>s04 and s01>s05 ) then s01
    when (s02>s01 and s02>s03 and s02>s04 and s02>s05 ) then s02
    when (s03>s01 and s03>s02 and s03>s04 and s03>s05 ) then s03
    when (s04>s01 and s04>s02 and s04>s03 and s04>s05 ) then s04
    when (s05>s01 and s05>s02 and s05>s03 and s05>s04 ) then s05
    else ''end as 新列
    from 表