标题:SQL SERVER 数据累加
只看楼主
遗忘的爱
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2010-7-14
结帖率:50%
已结贴  问题点数:20 回复次数:10 
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: 2
等 级:论坛游民
威 望:2
帖 子:18
专家分:38
注 册:2012-6-3
得分:5 
楼主到底要表达什么意思?
2013-01-15 20:28
cnfarer
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:179
帖 子:3330
专家分:21157
注 册:2010-1-19
得分:5 
为什么不是260,而是160?

★★★★★为人民服务★★★★★
2013-01-16 06:33
遗忘的爱
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
洋葱头158
Rank: 1
来 自:河北
等 级:新手上路
帖 子:1
专家分:5
注 册:2013-1-16
得分:5 
不太懂耶!
2013-01-16 13:24
半杯清茶
Rank: 4
等 级:业余侠客
威 望:6
帖 子:39
专家分:297
注 册:2012-11-13
得分:5 
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


试试!!!
2013-01-16 15:56
遗忘的爱
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



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-396674-1-1.html




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

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