日期:2014-05-16  浏览次数:20700 次

sql统计语句请教?
本帖最后由 xhbmj 于 2013-12-31 17:46:07 编辑
a表(代码表)
代码id  代码名称
1       分类1
2       分类2
3       分类3

b表(数据表)
id  代码id  入库日期
1   1       2013/12-1
2   1       2013/12-7
3   2       2013/11-5
4   1       2013/11-28
5   2       2013/10-13

需要得到这样的结果:
代码名称  年月(2013)
         12 11 10 9 8 7 6 5 4 3 2 1
分类1    2  1  0 0 0 0 0 0 0 0 0 0
分类2    0  1  1 0 0 0 0 0 0 0 0 0 
分类3    0  0  0 0 0 0 0 0 0 0 0 0 

即按分类统计当前年月往前推一年内的月份的数据量统计

如现在是2014年1月,则应该出现的月份序列为:
1 12 11 10 9 8 7 6 5 4 3 2 

------解决方案--------------------
给你个思路:
根据代码名称分组,加上 利用case when 行转列。
具体sql自己写吧。
------解决方案--------------------
create table tb3
(id number ,
 name varchar(20)
);
insert into tb3 (ID, NAME)
values (3, '分类3
');

insert into tb3 (ID, NAME)
values (2, '分类2');

insert into tb3 (ID, NAME)
values (1, '分类1
');



create table tb4
(no number ,
 id number,
 dt date
) ;
insert into tb4 (NO, ID, DT, ROWID)
values (4, 1, to_date('28-11-2013', 'dd-mm-yyyy'), 'AAAR88AAEAAAASPAAA');

insert into tb4 (NO, ID, DT, ROWID)
values (5, 2, to_date('13-10-2013', 'dd-mm-yyyy'), 'AAAR88AAEAAAASPAAB');

insert into tb4 (NO, ID, DT, ROWID)
values (3, 2, to_date('05-11-2013', 'dd-mm-yyyy'), 'AAAR88AAEAAAASPAAC');

insert into tb4 (NO, ID, DT, ROWID)
values (1, 1, to_date('01-12-2013', 'dd-mm-yyyy'), 'AAAR88AAEAAAASPAAD');

insert into tb4 (NO, ID, DT, ROWID)
values (2, 1, to_date('07-12-2013',