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

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

2012-11-08 
求几个字段里最大值数据类型是decimal(18, 2)IDVAL1VAL2VAL3myVal12.348.125.203.0021.846.315.822.26我想

求几个字段里最大值
数据类型是decimal(18, 2)

IDVAL1VAL2VAL3myVal

12.348.125.203.00

21.846.315.822.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 

热点排行