zoukankan      html  css  js  c++  java
  • 根据名称分组,选择最大日期和最小日期的数据,并显示在一行上

    在数据库中有个表aa

    现在要根据名称分组,选择最大日期和最小日期的数据,并显示在一行上,

    首先要根据名称分组,取得最大日期 然后 union all 根据名称分组,选取最小日期,效果如图

    select top 100 percent aa.names,aa.s,aa.createdate from 
    (
        (select   top 100 percent names,min(createdate) as 日期
        from aa
        group by names
        )
        union ALL
        (select   top 100 percent names,max(createdate) as 日期
        from aa
        group by names
        )
    )t 
    inner join aa on t.names=aa.names and t.日期=aa.createdate
    order by t.names, t.日期

    变成一行的话,要按名称查询,先查出最小数据,然后关联刚才的查询结果,条件是名称相等,日期不等

    select t1.names,t1.s,t1.createdate,t2.s,t2.createdate from 
    (
            select top 100 percent aa.names,aa.s,aa.createdate from 
            (
                select   top 100 percent names,min(createdate) as 日期
                from aa
                group by names    
            )t 
            inner join aa on t.names=aa.names and t.日期=aa.createdate
    ) t1
    left join 
    (
            select top 100 percent aa.names,aa.s,aa.createdate from 
            (
                (select   top 100 percent names,min(createdate) as 日期
                from aa
                group by names
                )
                union ALL
                (select   top 100 percent names,max(createdate) as 日期
                from aa
                group by names
                )
            )t 
            inner join aa on t.names=aa.names and t.日期=aa.createdate
    )t2 on t1.names=t2.names and t1.createdate <> t2.createdate
    order by t1.names

    一定要用左联接,不然,只有一条的数据,就被过滤掉了。

  • 相关阅读:
    Mysql经常使用函数
    ZOJ 3690 Choosing number
    cocos2d-x 多触点监听
    ansible不配ssh连接,用户密码登录
    Ansible Role
    关闭centos自动升级内核
    让外部网络访问K8S service的四种方式
    Hadoop实战:Hadoop分布式集群部署(一)
    Docker:搭建私有仓库(Registry 2.4)
    Docker下的Spring Cloud三部曲之一:极速体验
  • 原文地址:https://www.cnblogs.com/gates/p/4463862.html
Copyright © 2011-2022 走看看