• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    在sql中实现取一行最大值或者最小值

    原始数据和目标数据

    实现SQL语句(最大)

    select
    shop,
    month,
    greatest(dz,fz,sp) as max
    from
    tablename;

    实现SQL语句(最小)

    select
    shop,
    month,
    least (dz,fz,sp) as min
    from
    tablename;

    补充:SQL Server获取一行中多列的最大值三种方法

    有些时候我们需要从一个表的多个列中获取一个最大值(这些列的数据类型相同,并且是每一行记录都要获取一个最大值)。下面讲了三种方法,我们一起看下。

    首先我们创建一个表,并在表中插入需要用到的记录,如下:

    create table Demo(
     Guid varchar(50) not null default newid() primary key,
     Date1 datetime null,
     Date2 datetime null,
     Date3 datetime null
    )

    然后我们在表中插入测试数据

    insert into Demo(Date1,Date2,Date3) values
    ('2016-9-5','2016-8-6','2016-10-9'),
    ('2015-5-6','2015-8-6','2015-6-3'),
    ('2016-10-6','2015-6-6','2016-9-6')
    
    select * from Demo
    

    我们需要获取上面每一行记录的三个日期列的最大值。

    方法一(效率高):

    select Guid,(select Max(NewDate) from (values (Date1),(Date2),(Date3)) as #temp(NewDate)) as MaxDate from Demo

    方法二(效率高):

    select Guid, max(NewDate) as MaxDate from Demo unpivot (NewDate for DateVal in (Date1,Date2,Date3)) as u group by Guid

    方法三(效率低,不建议用):

    select Guid, (select max(NewDate) as MaxDate from (select Demo.Date1 as NewDate union select Demo.Date2 union select Demo.Date3)ud) MaxDate from Demo

    第一种方法使用values子句,将每行数据构造为只有一个字段的表,以后求最大值,非常巧妙;

    第二种方法使用行转列经常用的UNPIVOT 关键字进行转换再显示;

    第三种方法跟第一种方法差不多,但是使用union将三个UpdateByAppDate字段合并为只有一个字段的结果集然后求最大值。

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。如有错误或未考虑完全的地方,望不吝赐教。

    您可能感兴趣的文章:
    • SQL设置SQL Server最大连接数及查询语句
    • Mysql获取id最大值、表的记录总数等相关问题的方法汇总
    • mysql获取分组后每组的最大值实例详解
    上一篇:mysql 5.7 的 /etc/my.cnf 参数介绍
    下一篇:最全50个Mysql数据库查询练习题
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    在sql中实现取一行最大值或者最小值 在,sql,中,实现,取,一行,