sql 查询重复字段中另字段之和

比如:
姓 名 生活费 时间
abc 20 2010.3.5
aaa 10 2010.3.8
abc 50 2010.3.10
aaa 80 2010.2.5
bbb 45 2010.2.6
abc 100 2010.3.15

求所有人本月的生活费之总。排序
希望高手们帮帮我。谢谢。。。

第1个回答  2010-03-27
1.创建表(Oracle)
nameof Varchar2 4000
maintenanceof Number
timeof Date
2.插入数据
insert all
into test07 values('张三',20,to_date('2010-03-05 00:00;00','yyyy-mm-dd hh24:mi:ss'))
into test07 values('李四',10,to_date('2010-03-08 00:00;00','yyyy-mm-dd hh24:mi:ss'))
into test07 values('张三',50,to_date('2010-03-10 00:00;00','yyyy-mm-dd hh24:mi:ss'))
into test07 values('李四',80,to_date('2010-02-05 00:00;00','yyyy-mm-dd hh24:mi:ss'))
into test07 values('王五',40,to_date('2010-02-6 00:00;00','yyyy-mm-dd hh24:mi:ss'))
into test07 values('张三',100,to_date('2010-03-15 00:00;00','yyyy-mm-dd hh24:mi:ss'))
into test07 values('张三',38,to_date('2010-04-01 00:00;00','yyyy-mm-dd hh24:mi:ss'))
select * from dual

3.求某月某人月生活费总和(这个是求三月)
select nameof as 姓名,sum(MAINTENANCEOF) as 三月份生活费总和 from test07
where nameof in (select nameof from test07 group by nameof )
and timeof> to_date('2010-03-01 00:00;00','yyyy-mm-dd hh24:mi:ss')
and timeof< to_date('2010-03-31 00:00;00','yyyy-mm-dd hh24:mi:ss')
group by nameof
order by sum(MAINTENANCEOF)

4.另外复杂一点,可以自动查找存在的月份,并且求出月份的花费总额度。我暂时没考虑优化。
建立一个视图:
drop view testviewview07

create view testviewview07 as select distinct NAMEOF as nvv,trunc(TIMEOF,'mm') as tvv
from test07

查询语句:
select nvv as 姓名, to_char(tvv,'yyyy-mm') as 月份,
(
select sum(MAINTENANCEOF) from test07
where test07.nameof=testviewview07.nvv
and test07.timeof<add_months(testviewview07.tvv,1)
and test07.timeof>=testviewview07.tvv
) as 月总费用
from testviewview07 order by tvv

结果如下:
姓名 月份 月总费用
李四 2010-02 160
王五 2010-02 80
张三 2010-03 340
李四 2010-03 20
张三 2010-04 76
第2个回答  2010-03-26
人数少的话,那比较简单
1、先把整个表的信息提取出来
sql = "select * from 表"
2、定义和的变量 位货币型,有几个人就定义几个变量。
3、利用循环求和
for i = 0 to adodc1.recordset.recordcount -1
sum1 = sum1 + adodc1.recordset!姓名.(abc)
sum2 = sum2 + .......................(aaa)
......
aoddc1.recordset.moveNext
next i
text1 = ...... '把变量显示到文本框即可。
第3个回答  2010-03-26
select sum(生活费),姓名 from table where month(时间)=month(getdate()) group by 姓名 order by sum(生活费) desc本回答被提问者采纳
第4个回答  2010-03-26
特别推荐 1楼。
相似回答