• 从一个空表中获取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

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

  • 相关阅读:
    vue --- 全局弹窗,只调用对应实例
    代理相关;win操作
    mongoBD + node + express
    菜鸟初学 node 推荐 亲测easy
    H5 ---- 点击遍历所有标签,复制对应的文本
    async与await初步应用
    C# Enum 添加自定义Attribute,然后通过泛型与反射的方式得到事先定义的标记
    VS2013 C# 调用 cognex 的QuickBuild做程序时发生一个错误
    C# 获取数组的内存地址
    利用反射插入数据库与更新数据库
  • 原文地址:https://www.cnblogs.com/andysd/p/3040377.html
Copyright © 2020-2023  润新知