当前位置: 代码迷 >> Sql Server >> 求几个字段里最大值,该怎么处理
  详细解决方案

求几个字段里最大值,该怎么处理

热度:21   发布时间:2016-04-25 01:21:27.0
求几个字段里最大值
数据类型是decimal(18, 2)

ID VAL1 VAL2 VAL3 myVal

1 2.34 8.12 5.20 3.00

2 1.84 6.31 5.82 2.26



我想得到这样的值 myVal-(VAL1 VAL2 VAL3 3个字段里值最大的那个数) 查询语句改怎么写?

------解决方案--------------------
SQL code
IF EXISTS (SELECT 1 FROM SYSOBJECTS WHERE name = 'tba')BEGIN    DROP TABLE tbaENDGOCREATE TABLE tba(    ID INT,    VAL1 DECIMAL(18,2),    VAL2 DECIMAL(18,2),    VAL3 DECIMAL(18,2),    myVal DECIMAL(18,2))GOINSERT INTO tbaSELECT 1,2.34,8.12,5.20,3.00 UNIONSELECT 2,1.84,6.31,5.82,2.26GOWITH maxval AS(    SELECT ID,VAL1,myVal    FROM tba    UNION ALL    SELECT ID,VAL2,myVal    FROM tba    UNION ALL    SELECT ID,VAL3,myVal    FROM tba)SELECT ID,myVal - MAX(VAL1) AS valueFROM maxvalGROUP BY ID,myValID    value2    -4.051    -5.12
------解决方案--------------------
SQL code
select top 10 A.id,A.Dept,A.Line,A.ProductName,A.Model,A.FixedAssetCode,A.Symptom1,A.Remark,A.scheme_1,A.Remark_1,QuotedPrice1_1,QuotedPrice1_2,A.scheme_2,A.Remark_2,QuotedPrice2_1,QuotedPrice2_2,A.scheme_3,A.Remark_3,QuotedPrice3_1,QuotedPrice3_2,A.scheme_Name,A.USE_Price,A.USE_Price- MAX(VAL1) AS CostDownfrom maxval AS A INNER JOIN dbo.Repair ON A.id = Repair.id GROUP by A.id,A.Dept,A.Line,A.ProductName,A.Model,A.FixedAssetCode,A.Symptom1,A.Remark,A.scheme_1,A.Remark_1,QuotedPrice1_1,QuotedPrice1_2,A.scheme_2,A.Remark_2,QuotedPrice2_1,QuotedPrice2_2,A.scheme_3,A.Remark_3,QuotedPrice3_1,QuotedPrice3_2,A.scheme_Name,A.USE_Price
------解决方案--------------------
SQL code
--借用1楼数据IF EXISTS (SELECT 1 FROM SYSOBJECTS WHERE name = 'tba')BEGIN    DROP TABLE tbaENDGOCREATE TABLE tba(    ID INT,    VAL1 DECIMAL(18,2),    VAL2 DECIMAL(18,2),    VAL3 DECIMAL(18,2),    myVal DECIMAL(18,2))GOINSERT INTO tbaSELECT 1,2.34,8.12,5.20,3.00 UNIONSELECT 2,1.84,6.31,5.82,2.26GOselect id,myVal-(case when val1>val2 and val1>val3 then val1    when val2>val3 then val2    else val3 end)as decmax from tbagodrop table tba/*id          decmax----------- ---------------------------------------1           -5.122           -4.05(2 行受影响)*/
------解决方案--------------------
SQL code
select id,       myVal-(       case when val1>val2 and val2>val3 then val1            when val2>val3 and val2>val1 then val2       else val3 end)from tab
  相关解决方案