有如下数据:
date name money
日期 姓名 金额
2008-1-12 sun 100
2008-1-12 张 100
2008-1-13 sun 100
2008-1-19 张 300
2008-2-12 sun 120
2008-2-19 张 300
2008-3-12 sun 130
得到的查询结果:
姓名 2008-01 2008-02 2008-03
sun 200 120 130
张 400 300
请写出查询语句,提示:分组、求和。
date name money
日期 姓名 金额
2008-1-12 sun 100
2008-1-12 张 100
2008-1-13 sun 100
2008-1-19 张 300
2008-2-12 sun 120
2008-2-19 张 300
2008-3-12 sun 130
得到的查询结果:
姓名 2008-01 2008-02 2008-03
sun 200 120 130
张 400 300
请写出查询语句,提示:分组、求和。
--实现语句
select t.tname "姓名" ,
sum(decode(to_char(t.tdate,
'yyyy-mm'),
'2008-01',t.tmoney,0)) "2008-01"
, sum(decode(to_char(t.tdate, 'yyyy-mm'), '2008-02',t.tmoney,0)) "2008-02"
, sum(decode(to_char(t.tdate, 'yyyy-mm'), '2008-03',t.tmoney,0)) "2008-03"
from colandrow t
group by t.tname
, sum(decode(to_char(t.tdate, 'yyyy-mm'), '2008-02',t.tmoney,0)) "2008-02"
, sum(decode(to_char(t.tdate, 'yyyy-mm'), '2008-03',t.tmoney,0)) "2008-03"
from colandrow t
group by t.tname
--下面是表结构
create
table colandrow
(
tid varchar2(10),
tdate date,
tname varchar2(50),
tmoney number(10,2)
)
insert into colandrow values( '1',to_date( '2008-1-12', 'yyyy-mm-dd'), 'sun',100);
insert into colandrow values( '2',to_date( '2008-1-12', 'yyyy-mm-dd'), '张', 100);
insert into colandrow values( '3',to_date( '2008-1-13', 'yyyy-mm-dd'), 'sun', 100);
insert into colandrow values( '4',to_date( '2008-1-19', 'yyyy-mm-dd'), '张', 300);
insert into colandrow values( '5',to_date( '2008-2-12', 'yyyy-mm-dd') , 'sun', 120);
insert into colandrow values( '6',to_date( '2008-2-19', 'yyyy-mm-dd') , '张' ,300);
insert into colandrow values( '7',to_date( '2008-3-12', 'yyyy-mm-dd') , 'sun', 130);
(
tid varchar2(10),
tdate date,
tname varchar2(50),
tmoney number(10,2)
)
insert into colandrow values( '1',to_date( '2008-1-12', 'yyyy-mm-dd'), 'sun',100);
insert into colandrow values( '2',to_date( '2008-1-12', 'yyyy-mm-dd'), '张', 100);
insert into colandrow values( '3',to_date( '2008-1-13', 'yyyy-mm-dd'), 'sun', 100);
insert into colandrow values( '4',to_date( '2008-1-19', 'yyyy-mm-dd'), '张', 300);
insert into colandrow values( '5',to_date( '2008-2-12', 'yyyy-mm-dd') , 'sun', 120);
insert into colandrow values( '6',to_date( '2008-2-19', 'yyyy-mm-dd') , '张' ,300);
insert into colandrow values( '7',to_date( '2008-3-12', 'yyyy-mm-dd') , 'sun', 130);
本文转自 yuwenhu 51CTO博客,原文链接:http://blog.51cto.com/yuwenhu/159349,如需转载请自行联系原作者