| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1539 人关注过本帖
标题:SQL SERVER 数据累加
取消只看楼主 加入收藏
遗忘的爱
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2010-7-14
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:5 
SQL SERVER 数据累加
ID       开始日期    结束日期     数量
1      2012-10-1     2012-10-31     100
1      2012-11-1     2012-11-31     50
2      2012-10-1     2012-10-31     60
3      2012-10-1     2012-10-31     100
怎么把其他ID里与ID 1 时间相同的数据累加,得出下表
开始日期       结束日期      数量
2012-10-1     2012-10-31     160
2012-11-1     2012-11-31     50
搜索更多相关主题的帖子: 时间 其他 
2013-01-15 15:21
遗忘的爱
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2010-7-14
收藏
得分:0 
额,不好意思 写错了,应该是
ID       开始日期    结束日期     数量
1      2012-10-1     2012-10-31     100
1      2012-11-1     2012-11-31     50
2      2012-10-1     2012-10-31     60
3      2012-10-2     2012-10-31     100
4      2012-10-1     2012-10-31     30

把ID为1的开始日期和结束日期作为标准,
ID       开始日期    结束日期       数量
1      2012-10-1     2012-10-31     100
1      2012-11-1     2012-11-31     50
假设要在指定的ID(3)和ID(4)中找出开始日期和结束日期都与ID(1)相同的数据,把数量加到ID(1)的数量上
ID       开始日期    结束日期      数量
1      2012-10-1     2012-10-31     100 +30
1      2012-11-1     2012-11-31     50


[ 本帖最后由 遗忘的爱 于 2013-1-16 10:18 编辑 ]
2013-01-16 09:32
遗忘的爱
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2010-7-14
收藏
得分:0 
程序代码:
select 开始日期,结束日期,
数量=(select sum(数量)  from 表 j where (j.ID='3' or j.ID='4') and i.开始日期=j.开始日期 and i.结束日期=j.结束日期)
from 表 i,
where i.ID='1'
group by i.开始日期,i.结束日期
这是我的代码,算出来的结果有点问题,大家能帮忙看看是什么问题吗?
2013-01-16 10:24
遗忘的爱
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2010-7-14
收藏
得分:0 
以下是引用半杯清茶在2013-1-16 15:56:15的发言:

select tb2.id,tb1.startdate,tb1.enddate,sum(num) from  tb tb1 ,(select id ,startdate,enddate,num from tb where tb.id='1')tb2
 where tb1.startdate=tb2.enddate and tb1.enddate=tb2.enddate
group by  tb2.id,tb1.startdate,tb1.enddate
 
 
试试!!!
列名num不明确,这段代码还没有指定ID(3)和ID(4).
2013-01-16 21:27
遗忘的爱
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2010-7-14
收藏
得分:0 
我现在的思路是把ID 1、3、4的数据取出来放到临时表里,然后再从临时表查询累加。
程序代码:
select * into #temp fromwhere id in('1','3','4')
select starttime,endtime,数量=(select SUM(num) from #temp j where i.starttime=j.starttime and i.endtime=j.endtime)
from #temp i
where i.id='1'
group by i.starttime,i.endtime

碰到问题是,怎么从数据库里取多行数据,可能是要取ID为1、2、3行的数据,也有可能取 2、4,这个用存储过程可以实现吗?语句是什么?
2013-01-16 21:34
遗忘的爱
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2010-7-14
收藏
得分:0 
我现在的思路是把ID 1、3、4的数据取出来放到临时表里,然后再从临时表查询累加。
程序代码:
select * into #temp fromwhere id in('1','3','4')
select starttime,endtime,数量=(select SUM(num) from #temp j where i.starttime=j.starttime and i.endtime=j.endtime)
from #temp i
where i.id='1'
group by i.starttime,i.endtime

碰到问题是,怎么从数据库里取多行数据,可能是要取ID为1、2、3行的数据,也有可能取 2、4,这个用存储过程可以实现吗?语句是什么?
2013-01-16 22:06
快速回复:SQL SERVER 数据累加
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.070399 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved