sql求一个字段相同值的其余字段和

来源:百度知道 编辑:UC知道 时间:2024/07/07 05:51:17
例表:
year money max
1999-01-01 20 200
1999-02-14 90 150
1999-03-05 70 120
1999-09-27 80 180
1999-11-01 130 120
2000-02-31 210 250
2000-03-11 290 150
2000-06-14 100 140
2000-12-21 300 160
通过查询要的结果为
1999 390(所有1999对应的money的总和) 620(所有1999对应的max的总和)
2000 900(所有2000对应的money的总和) 700(所有2000对应的max的总和)
这样的sql语句怎么写
服务器: 消息 256,级别 16,状态 1,行 1
数据类型 datetime 对于函数 substring 无效。允许的类型为: char/varchar、nchar/nvarchar 和 binary/varbinary。

很简单,将时间转换成年,再分组查询
--sqlserver
select substr(year,1,4) years, sum(money),sum(max)
from 表
group by substr(year,1,4) --根据年份分组

--oracle
select to_char(year,'YYYY') years, sum(money),sum(max)
from 表
group by to_char(year,'YYYY')
year字段为时间型,字符型可以参照上面的解决

关键就是将日期转化为 单独 的 年份,在分组统计
字段类型不同,就使用不同的函数

什么数据库?
换成substring

你是sqlserver 数据库?
datepart(year,year)
第一个year指返回时间中的年份
第二个year指时间,也就是你表中的year字段
具体你可以看看datepart()使用

select sum(money),sum(max),substr(year,1,4) as years
from table_name
group by years

先按照这个思路看看,不行就吃了中饭回来帮你调试