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分的.答案好我追加分
上半月: 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分的.答案好我追加分
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')
)