zoukankan      html  css  js  c++  java
  • 从一个空表中获取N条数据

    我们就用例子来说明吧,一个消费记录表,这里面的记录的是用户的消费记录,这个时候有个要求,用户想知道从一个时间到另一个时间的消费记录,中间有的日期没有消费的也得出来,只不过数据都是0(当然我们项目中有这个要求啦^^),当拿到这个需求的时候一下子感觉无从下手了,因为我们平成的查询都是SELECT 数据 FROM DUAL WHERE 条件 这个时候符合条件也只是一条数据啊,如果是一个空表根本就查不到数据,这也是无从下手的原因,今天在群里问了一下,得到高手指点用CONNENT BY 来解决这个问题,于是做了一个例子作为记录,以后在遇到这样的问题就会了:

    SELECT 开始时间+ROWNUM-1 FROM DUAL CONNECT BY ROWNUM < 结束时间 - 开始时间

    今天用到了sql server 2008的类似上面的情况,于是把自己写出来的sql在这里保存一下,省得以后忘记了:

    with t (createtime,num)as
    (select GETDATE() createtime ,10 num
    union all
    select t.createtime-1,t.num-1 from (select GETDATE() createtime ,10 num) tem,t
    where t.createtime-1 > tem.createtime - tem.num
    )
    select * from t

    sql server 不像Oracle那么方便,还的自己构造,如果原来的表中有多条数据,那么这个递归出来的结果就不是我们想要的了,如:

    with t (createtime,num)as
    (select GETDATE() createtime ,10 num

    union all

    select GETDATE()-5 createtime ,5 num
    union all
    select t.createtime-1,t.num-1 from (select GETDATE() createtime ,10 num) tem,t
    where t.createtime-1 > tem.createtime - tem.num
    )
    select * from t

    目前还没有想出解决方案,自己也在测试中,先把这些记下来,以免以后再次用的时候还的去想,程序就是这样,一段时间不用很容易忘记的。

  • 相关阅读:
    centos7不能上网问题
    数据库修改为utf8mb4
    查看Linux系统信息
    如何查看Linux是否安装了gcc和gcc-c++
    nginx启动报错
    centos7无法上网问题
    notepad++如何将换行替换成其它符号?
    JAVA DESUtils加密工具
    Django之Model(一)--基础篇
    深刻理解Python中的元类(metaclass)以及元类实现单例模式
  • 原文地址:https://www.cnblogs.com/andysd/p/3040377.html
Copyright © 2011-2022 走看看