求:SQL语句 具体看图片要求 10
根据表1的两个字段(Area区域和sDate添加记录的日期)统计出某个月所有的天数的各个区域的“添加记录数”。每个月有多少天,统计多少条记录,根据月份自动改变,如果每一天...
根据表1的两个字段(Area 区域 和sDate 添加记录的日期)统计出 某个月所有的天数的 各个区域的 “添加记录数”。
每个月有多少天,统计多少条记录 ,根据月份 自动改变 ,如果 每一天 没有添加记录则 默认 为 “0”,如:
1号2号,,,,28 号 29号,30 号,31号。
SQL 语句 和 存储过程都可以
谢谢。。。。。。。 展开
每个月有多少天,统计多少条记录 ,根据月份 自动改变 ,如果 每一天 没有添加记录则 默认 为 “0”,如:
1号2号,,,,28 号 29号,30 号,31号。
SQL 语句 和 存储过程都可以
谢谢。。。。。。。 展开
展开全部
alter session set nls_date_format='yyyy-mm-dd';
create table area (area varchar2(10),sdate date,col1 varchar2(10),col2 varchar2(10),col3 varchar2(10));
insert into area (area,sdate) values ('区域一',trunc(sysdate-01));
insert into area (area,sdate) values ('区域一',trunc(sysdate-02));
insert into area (area,sdate) values ('区域一',trunc(sysdate-03));
insert into area (area,sdate) values ('区域三',trunc(sysdate-04));
insert into area (area,sdate) values ('区域一',trunc(sysdate-05));
insert into area (area,sdate) values ('区域一',trunc(sysdate-06));
insert into area (area,sdate) values ('区域三',trunc(sysdate-07));
insert into area (area,sdate) values ('区域一',trunc(sysdate-08));
insert into area (area,sdate) values ('区域三',trunc(sysdate-04));
insert into area (area,sdate) values ('区域一',trunc(sysdate-05));
insert into area (area,sdate) values ('区域一',trunc(sysdate-06));
insert into area (area,sdate) values ('区域三',trunc(sysdate-07));
insert into area (area,sdate) values ('区域一',trunc(sysdate-08));
insert into area (area,sdate) values ('区域二',trunc(sysdate-09));
insert into area (area,sdate) values ('区域一',trunc(sysdate-10));
insert into area (area,sdate) values ('区域二',trunc(sysdate-11));
insert into area (area,sdate) values ('区域一',trunc(sysdate-12));
insert into area (area,sdate) values ('区域二',trunc(sysdate-13));
insert into area (area,sdate) values ('区域一',trunc(sysdate-14));
commit;
select to_char(rq,'dd')||'号' "日期",
sum(case when area='区域一' then 1 end) "区域一",
sum(case when area='区域二' then 1 end) "区域二",
sum(case when area='区域三' then 1 end) "区域三"
from area a,(SELECT trunc(sysdate+ROWNUM-30) rq FROM DUAL CONNECT BY ROWNUM <= 62) b
where rq between trunc(sysdate,'mm') and last_day(sysdate)
and a.sdate(+)=b.rq
group by rq order by rq
;
如果要统计其它月份的,自己改一下sql里的sysdate
create table area (area varchar2(10),sdate date,col1 varchar2(10),col2 varchar2(10),col3 varchar2(10));
insert into area (area,sdate) values ('区域一',trunc(sysdate-01));
insert into area (area,sdate) values ('区域一',trunc(sysdate-02));
insert into area (area,sdate) values ('区域一',trunc(sysdate-03));
insert into area (area,sdate) values ('区域三',trunc(sysdate-04));
insert into area (area,sdate) values ('区域一',trunc(sysdate-05));
insert into area (area,sdate) values ('区域一',trunc(sysdate-06));
insert into area (area,sdate) values ('区域三',trunc(sysdate-07));
insert into area (area,sdate) values ('区域一',trunc(sysdate-08));
insert into area (area,sdate) values ('区域三',trunc(sysdate-04));
insert into area (area,sdate) values ('区域一',trunc(sysdate-05));
insert into area (area,sdate) values ('区域一',trunc(sysdate-06));
insert into area (area,sdate) values ('区域三',trunc(sysdate-07));
insert into area (area,sdate) values ('区域一',trunc(sysdate-08));
insert into area (area,sdate) values ('区域二',trunc(sysdate-09));
insert into area (area,sdate) values ('区域一',trunc(sysdate-10));
insert into area (area,sdate) values ('区域二',trunc(sysdate-11));
insert into area (area,sdate) values ('区域一',trunc(sysdate-12));
insert into area (area,sdate) values ('区域二',trunc(sysdate-13));
insert into area (area,sdate) values ('区域一',trunc(sysdate-14));
commit;
select to_char(rq,'dd')||'号' "日期",
sum(case when area='区域一' then 1 end) "区域一",
sum(case when area='区域二' then 1 end) "区域二",
sum(case when area='区域三' then 1 end) "区域三"
from area a,(SELECT trunc(sysdate+ROWNUM-30) rq FROM DUAL CONNECT BY ROWNUM <= 62) b
where rq between trunc(sysdate,'mm') and last_day(sysdate)
and a.sdate(+)=b.rq
group by rq order by rq
;
如果要统计其它月份的,自己改一下sql里的sysdate
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询