oracle中查询每个月1号的订单,若一号没有订单就查询上一个月的最后一笔定单,这样的语句怎么写啊。
oracle中查询每个月1号的订单,若一号没有订单就查询上一个月的最后一笔定单,这样的语句怎么写啊。请大虾们指教...
oracle中查询每个月1号的订单,若一号没有订单就查询上一个月的最后一笔定单,这样的语句怎么写啊。请大虾们指教
展开
2个回答
展开全部
假设有个订单表orders里有个订单时银凯间字段o_time(它带有具体的时间:时宏蚂分秒):
delcare
v_count number;
qry_mon date;
begin
qry_mon := to_date('2013-04-03',''); --要查询的月份
select count(*) into v_count from orders where o_time >= trunc(qry_mon,'mm') and o_time < trunc(qry_mon,'mm')+1; --查询1号00:00:00 到2 号00:00:00之间的订单
if v_count=0 then
--1号没订单,查询上月最后1笔订单
select count(*) into v_count from orders
where rownum=1
and o_time=(select max(o_time) from orders
where o_time >=add_months(trunc(qry_mon,'mm'),-1) --上月1号00:00:00
and o_time<=trunc(qry_mon,'mm')-1/60/60/24 --上月月末23:59:59
--上一句也可以这样 and o_time < trunc(qry_mon,'mm') --查询月的1号蔽搏埋00:00:00
);
。。。
。。。
else
--处理qry_mon这个月一号订单
end if;
end;
/
delcare
v_count number;
qry_mon date;
begin
qry_mon := to_date('2013-04-03',''); --要查询的月份
select count(*) into v_count from orders where o_time >= trunc(qry_mon,'mm') and o_time < trunc(qry_mon,'mm')+1; --查询1号00:00:00 到2 号00:00:00之间的订单
if v_count=0 then
--1号没订单,查询上月最后1笔订单
select count(*) into v_count from orders
where rownum=1
and o_time=(select max(o_time) from orders
where o_time >=add_months(trunc(qry_mon,'mm'),-1) --上月1号00:00:00
and o_time<=trunc(qry_mon,'mm')-1/60/60/24 --上月月末23:59:59
--上一句也可以这样 and o_time < trunc(qry_mon,'mm') --查询月的1号蔽搏埋00:00:00
);
。。。
。。。
else
--处理qry_mon这个月一号订单
end if;
end;
/
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |