zoukankan      html  css  js  c++  java
  • SQL Server 求记录中的最新数据的方法

    /*已知数据:

    Column1   Column2     Column3    Column4
    A         10           am         1999-01-01 00:00:00.000
    A         11           am         1999-01-02 00:00:00.000                    
    B         12           bm         1999-01-03 00:00:00.000                    
    B         13           bm         1999-01-04 00:00:00.000                   
    C         14           cm         1999-01-05 00:00:00.000                    
    C         15           cm         1999-01-06 00:00:00.000

    要求得到数据:

    Column1  Column2     Column3     Column4                  
    A        11             am      1999-01-02 00:00:00.000                    
    B        13             bm      1999-01-04 00:00:00.000                    
    C        15             cm      1999-01-06 00:00:00.000 */

    --数据装载

    Create Table #T(Column1 varchar(10),Column2 int,Column3 varchar(10),Column4 datetime)
    insert #T select 'A',10,'am','1999-1-1'
    union all select 'A',11,'am','1999-1-2'
    union all select 'B',12,'bm','1999-1-3'
    union all select 'B',13,'bm','1999-1-4'
    union all select 'C',14,'cm','1999-1-5'
    union all select 'C',15,'cm','1999-1-6'

    --测试语句 方法1:

    select a.* from #T a
    where (a.Column4) = (select top 1 (Column4) from #T where Column1 = a.Column1 order by Column4 desc)

    --测试结果:

    Column1    Column2     Column3    Column4
    ---------- ----------- ---------- ------------------------------------------------------
    A          11          am         1999-01-02 00:00:00.000
    B          13          bm         1999-01-04 00:00:00.000
    C          15          cm         1999-01-06 00:00:00.000

    --测试语句 方法2:(最佳效率)

    select a.* from #T a join( select Column1,Column4=max(Column4)
    from #T group by Column1 ) b on a.Column1=b.Column1 and a.Column4=b.Column4 order by a.Column1

    --测试结果 方法2:

    Column1    Column2     Column3    Column4                                               
    ---------- ----------- ---------- ------------------------------------------------------
    A          11          am         1999-01-02 00:00:00.000
    B          13          bm         1999-01-04 00:00:00.000
    C          15          cm         1999-01-06 00:00:00.000

    http://www.west263.com/www/info/28485-1.htm

  • 相关阅读:
    Mysql 使用触发器,把插入的数据在插入到宁一张表里
    Mysql 查询今天的某些时间之外的数据
    PHPStorm+XDEBUG 调试Laravel
    Python 2.7 爬取51job 全国java岗位
    Tp3.1 文件上传到七牛云
    TP3.1 一对多模型关联
    Mysql 主从配置
    自动化测试Java一:Selenium入门
    Selenium基于Python 进行 web 自动化测试
    Python 创建XML
  • 原文地址:https://www.cnblogs.com/emanlee/p/1506195.html
Copyright © 2011-2022 走看看