假如查询指定日期的某一件商品的当天销售记录记录,如果当天销售记录为空,则往前或者往后查询离当天最近的一条有销售记录的一条数据,有没有高手帮忙解决一下啊,在线等

解决方案 »

  1.   

    我想用sql直接解决,那也得把数据查出来。
      

  2.   

      单用SQL文,有难度。意见同楼上
      

  3.   

    先确定指定日期是否有数据,如果没有取小于当前日期的最大日期的数据大致如下:select 销售记录
    from 表名
    where 日期字段=
    (--如果指定日期有数据取得的最大日期就是指定日期
    select max(日期字段)
    from 表名
    where 日期字段<=指定日期
    and 销售记录 is not null)
      

  4.   

    盗用6楼:select 销售记录
    from 表名 t1
    (--如果指定日期有数据取得的最大日期就是指定日期
    select min(abs(日期字段-指定日期)),日期字段
    from 表名
    where  销售记录 is not null
    group by 日期字段 ) t2
    where t1.日期字段=t2.日期字段
      

  5.   

    用case判断select count(*) from 销售表 where 销售时间=‘’试试
      

  6.   

    java3344520:肯定没有重复的,这个地段的数据时一直累加的,一直递增的
      

  7.   

    java3344520:假如查询指定日期的某一件商品的当天(就是这个当天也有可能是我选择的某一天,其他的都一样,就是一个前后的问题)销售记录记录,如果当天销售记录为空,则往前或者往后查询离当天最近的一条有销售记录的一条数据。
      

  8.   

    SELECT * FROM 销售表 WHERE 时间=(SELECT 时间 FROM (SELECT 时间,row_number()over(ORDER BY abs(时间-指定时间)) rn) WHERE rn=1);
      

  9.   

    要求很多哈。select min(abs(日期字段-指定日期)),日期字段
    from 表名
    where 销售记录 is not null
    group by 日期字段 这个按照 日期字段 排下序再取第一条
      

  10.   

    21楼jjaihua:
    select min(abs(日期字段-指定日期)),日期字段
    from 表名
    where 销售记录 is not null
    group by 日期字段  红色那里是怎么写啊,没看懂啊,
      

  11.   

    java3344520:
    min(abs(日期字段-指定日期))
    那这个结果是什么意思呢?去最小的绝对值怎么用啊?