解决方案 »

  1.   

    试试这个:
    select Number,x1,x2,x3,x4,
           case when X1 >= x2 and x1 >= x3 and X1>= x4 then x1
                when X2 >= x1 and x2 >= x3 and X2>= x4 then X2
                when X3 >= x1 and x3 >= x2 and X3>= x4 then X3
                else X4
           end '最大值'
    from cs
      

  2.   

    非常有用,朋友!多谢:)我还想问一下如何在asp.net中输入相应的代码实现上述功能啊,我是个asp.net新手,刚才我把上述代码放在asp.net中,但是结果无法显示,请问朋友您能再给点建议吗?就是我希望通过aso.net实现对上述数据库的操作,找到每行的最大值,并进行存储,存到字段maxvalue中,求指导啊
      

  3.   


    照理应该是可以显示的,把那个字段改成maxvalue试试:
    select Number,x1,x2,x3,x4,
           case when X1 >= x2 and x1 >= x3 and X1>= x4 then x1
                when X2 >= x1 and x2 >= x3 and X2>= x4 then X2
                when X3 >= x1 and x3 >= x2 and X3>= x4 then X3
                else X4
           end maxvalue
    from cs
    如果还需要存储,那么就需要insert 语句,插入到一个表中
      

  4.   


    --假設x5字段保存最大值
    WITH a1 AS
    (
    SELECT *
    FROM cs a
    CROSS APPLY
    (
    SELECT MAX(x1)
    FROM
    (
    SELECT x1 AS maxvalue FROM cs WHERE Number=a.Number
    UNION 
    SELECT x2 FROM cs WHERE Number=a.Number
    UNION 
    SELECT x3 FROM cs WHERE Number=a.Number
    UNION 
    SELECT x4 FROM cs WHERE Number=a.Number
    ) b
    ) c
    UPDATE a1 SET x5=maxvalue
      

  5.   


    --5樓少一個括號
    --假設x5字段保存最大值
    WITH a1 AS
    (
    SELECT *
    FROM cs a
    CROSS APPLY
    (
    SELECT MAX(x1)
    FROM
    (
    SELECT x1 AS maxvalue FROM cs WHERE Number=a.Number
    UNION 
    SELECT x2 FROM cs WHERE Number=a.Number
    UNION 
    SELECT x3 FROM cs WHERE Number=a.Number
    UNION 
    SELECT x4 FROM cs WHERE Number=a.Number
    ) b
    ) c
    )
    UPDATE a1 SET x5=maxvalue
      

  6.   

    http://blog.csdn.net/fredrickhu/article/details/4682241
      

  7.   


    照理应该是可以显示的,把那个字段改成maxvalue试试:
    select Number,x1,x2,x3,x4,
           case when X1 >= x2 and x1 >= x3 and X1>= x4 then x1
                when X2 >= x1 and x2 >= x3 and X2>= x4 then X2
                when X3 >= x1 and x3 >= x2 and X3>= x4 then X3
                else X4
           end maxvalue
    from cs
    如果还需要存储,那么就需要insert 语句,插入到一个表中

    朋友您好!我又重新试了一下,我在asp.net中添加如何代码
    update CS set a=(select Number,x1,x2,x3,x4 ,
    case when X1 >= x2 and x1 >= x3 and X1>= x4 then x1   
         when X2 >= x1 and x2 >= x3 and X2>= x4 then X2   
         when X3 >= x1 and x3 >= x2 and X3>= x4 then X3   
         else X4   
    end 'Maxvalue' 
    from CS)
    可是结果提示"当没有用 EXISTS 引入子查询时,在选择列表中只能指定一个表达式。",我想应该是再添加一个exists语句就可以了,但是我在网上看了好多关于exist的内容,始终解决不了这个问题,求指导啊,我是个asp.net新手:)
      

  8.   


    照理应该是可以显示的,把那个字段改成maxvalue试试:
    select Number,x1,x2,x3,x4,
           case when X1 >= x2 and x1 >= x3 and X1>= x4 then x1
                when X2 >= x1 and x2 >= x3 and X2>= x4 then X2
                when X3 >= x1 and x3 >= x2 and X3>= x4 then X3
                else X4
           end maxvalue
    from cs
    如果还需要存储,那么就需要insert 语句,插入到一个表中

    朋友您好!我又重新试了一下,我在asp.net中添加如何代码
    update CS set a=(select Number,x1,x2,x3,x4 ,
    case when X1 >= x2 and x1 >= x3 and X1>= x4 then x1   
         when X2 >= x1 and x2 >= x3 and X2>= x4 then X2   
         when X3 >= x1 and x3 >= x2 and X3>= x4 then X3   
         else X4   
    end 'Maxvalue' 
    from CS)
    可是结果提示"当没有用 EXISTS 引入子查询时,在选择列表中只能指定一个表达式。",我想应该是再添加一个exists语句就可以了,但是我在网上看了好多关于exist的内容,始终解决不了这个问题,求指导啊,我是个asp.net新手:)试试这个:update CS 
    set a= Maxvalue
    from 
    (select Number,x1,x2,x3,x4 ,
     case when X1 >= x2 and x1 >= x3 and X1>= x4 then x1   
          when X2 >= x1 and x2 >= x3 and X2>= x4 then X2   
          when X3 >= x1 and x3 >= x2 and X3>= x4 then X3   
          else X4   
     end Maxvalue 
     from CS
     )t
     where t.number = cs.number
     
      

  9.   


    照理应该是可以显示的,把那个字段改成maxvalue试试:
    select Number,x1,x2,x3,x4,
           case when X1 >= x2 and x1 >= x3 and X1>= x4 then x1
                when X2 >= x1 and x2 >= x3 and X2>= x4 then X2
                when X3 >= x1 and x3 >= x2 and X3>= x4 then X3
                else X4
           end maxvalue
    from cs
    如果还需要存储,那么就需要insert 语句,插入到一个表中

    朋友您好!我又重新试了一下,我在asp.net中添加如何代码
    update CS set a=(select Number,x1,x2,x3,x4 ,
    case when X1 >= x2 and x1 >= x3 and X1>= x4 then x1   
         when X2 >= x1 and x2 >= x3 and X2>= x4 then X2   
         when X3 >= x1 and x3 >= x2 and X3>= x4 then X3   
         else X4   
    end 'Maxvalue' 
    from CS)
    可是结果提示"当没有用 EXISTS 引入子查询时,在选择列表中只能指定一个表达式。",我想应该是再添加一个exists语句就可以了,但是我在网上看了好多关于exist的内容,始终解决不了这个问题,求指导啊,我是个asp.net新手:)试试这个:update CS 
    set a= Maxvalue
    from 
    (select Number,x1,x2,x3,x4 ,
     case when X1 >= x2 and x1 >= x3 and X1>= x4 then x1   
          when X2 >= x1 and x2 >= x3 and X2>= x4 then X2   
          when X3 >= x1 and x3 >= x2 and X3>= x4 then X3   
          else X4   
     end Maxvalue 
     from CS
     )t
     where t.number = cs.number
     
    成功了,非常感谢!!!
      

  10.   


    照理应该是可以显示的,把那个字段改成maxvalue试试:
    select Number,x1,x2,x3,x4,
           case when X1 >= x2 and x1 >= x3 and X1>= x4 then x1
                when X2 >= x1 and x2 >= x3 and X2>= x4 then X2
                when X3 >= x1 and x3 >= x2 and X3>= x4 then X3
                else X4
           end maxvalue
    from cs
    如果还需要存储,那么就需要insert 语句,插入到一个表中

    朋友您好!我又有问题向您请教了,是这样的,我在sql中建了一个表testsec,字段如下
    Number x1 x2 x3 x4 Xipj(x1,x2,x3,x4四个数的平均值) CL(初始值为空)n2(数据的行数),我在asp.net 中输入如下代码update testsec set CL=(sum(Xipj)/n2),可是系统提示
    “聚合不应出现在 UPDATE 语句的集合列表中”所以我又改成如下代码update testsec set CL=(select sum(Xipj)/n2 from testsec),可是系统又提示“选择列表中的列 'testsec.n2' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。 
    ”请问我怎样才能实现CL=(sum(Xipj)/n2)的功能啊(n2的值我是通过select count(*) from testsec 获取的)
      

  11.   

    如果只有四列的话,用union all转为一列。
    后面随便你取 min() max() avg() count() (sum(Xipj)/n2)……