RT:库中有两个时间 dateA 检测时间与, dateB 上报时间 ,要求是 以dateA 为基准 1号到15号为上半月 16号到月底为下半月 ,dateB则是比dateA延迟5天.也就是说上报的最晚时间 上半月为20号,下半月为 下个月的5号.上半月超过20号与下半月超过下个月5号的都视为迟报. 求的是迟报数.举例:
      上半月: dateA检测时间为 2月01号 , dateB上报时间为 2月01日 到 2月20号之间上报 则为正常上报.
              dateA检测时间为 2月15号 , dateB上报时间为 2月21号以后上报 则为迟报.
      下半月: dateA检测时间为 2月16号 , dateB上报时间为 2月16日 到 3月5号之间上报 则为正常上报.
              dateA检测时间为 2月28号 , dateB上报时间为 3月05号以后上报 则为迟报.
我想了2天了没想出什么好办法.SQL还是不行啊..
希望各位大大帮个忙,给个思路或者是SQL语句.当然SQL语句更好些直观.PS:只能发100分的.答案好我追加分

解决方案 »

  1.   

    没考虑性能 大概写一下
    SELECT SUM(num)
    FROM (
    SELECT COUNT(*) AS num
    FROM tableName 
    WHERE TO_CHAR(dateA,'dd')<16
      AND TO_CHAR(dateB,'dd') >20
      AND TO_CHAR(dateB,'yyyymm')>=TO_CHAR(dateA,'yyyymm')
    UNION ALL
    SELECT COUNT(*) AS num
    FROM tableName 
    WHERE TO_CHAR(dateA,'dd')>15
      AND (TO_CHAR(dateB,'dd') >15 OR TO_CHAR(dateB,'dd') <6)
      AND TO_CHAR(dateB,'yyyymm')>=TO_CHAR(dateA,'yyyymm')
      )