You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在SQL中查询每个合同对应多列数值的行最大值

SQL实现行级多字段最大值计算方案

方案1:使用主流数据库支持的GREATEST函数

大多数主流数据库(MySQL 5.0+、PostgreSQL、Oracle、SQL Server 2022+、BigQuery等)都内置了GREATEST函数,专门用于计算多个表达式的行内最大值,直接查询即可得到所需结果:

-- MySQL/PostgreSQL 写法,带空格的字段名用反引号/双引号包裹
SELECT 
    Contract,
    `value 1`,
    `Value 2`,
    `Value 3`,
    `Value 4`,
    GREATEST(`value 1`, `Value 2`, `Value 3`, `Value 4`) AS Maxvalue
FROM 你的实际表名;
-- SQL Server 写法,带空格的字段名用方括号包裹
SELECT 
    Contract,
    [value 1],
    [Value 2],
    [Value 3],
    [Value 4],
    GREATEST([value 1], [Value 2], [Value 3], [Value 4]) AS Maxvalue
FROM 你的实际表名;

方案2:兼容低版本数据库的CASE WHEN写法

如果使用的是不支持GREATEST的低版本数据库(如SQL Server 2022之前的版本),可以通过多分支条件判断实现:

SELECT 
    Contract,
    [value 1],
    [Value 2],
    [Value 3],
    [Value 4],
    CASE 
        WHEN [value 1] >= [Value 2] AND [value 1] >= [Value 3] AND [value 1] >= [Value 4] THEN [value 1]
        WHEN [Value 2] >= [Value 3] AND [Value 2] >= [Value 4] THEN [Value 2]
        WHEN [Value 3] >= [Value 4] THEN [Value 3]
        ELSE [Value 4]
    END AS Maxvalue
FROM 你的实际表名;

可选:永久新增Maxvalue存储列

如果需要把该列永久保存到表结构中,可以新增生成列(以MySQL为例):

ALTER TABLE 你的实际表名
ADD COLUMN Maxvalue INT GENERATED ALWAYS AS (GREATEST(`value 1`, `Value 2`, `Value 3`, `Value 4`)) STORED;

内容的提问来源于stack exchange,提问作者Nam Nguyen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 14:48:04