| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 784 人关注过本帖
标题:关于sql中计算的问题
只看楼主 加入收藏
kamishiro
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2013-3-21
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:6 
关于sql中计算的问题
我今天刚网上自学sql,所以可能问的问题不专业,还请大家帮忙看看;
 我有前四列,我要得出最后列就是sum_count,为了方便大家看,那个date我都是按时间顺序排的.
 计算的逻辑是计算在该ID的日期之前的相同TYPE的累计count,
 比如ID4,在2012/1/4之前的同类型a有ID1和ID2,所以累计值是200
 如何在下面的程序里加入语句使得我能得到这个效果啊?谢谢啦
 select A.ID,A.date,A.type,A.count from A
ID    date    type    count    sum_count
1    2012/1/1    a    100    0
2    2012/1/2    a    100    100
3    2012/1/3    b    100    0
4    2012/1/4    a    100    200
5    2012/1/5    b    100    100


搜索更多相关主题的帖子: 计算 count 如何 专业 
2013-03-21 21:36
暖暖的南风
Rank: 3Rank: 3
等 级:论坛游侠
威 望:3
帖 子:28
专家分:129
注 册:2013-3-10
收藏
得分:5 
--使用存储过程来解决
CREATE PROCEDURE <存储过程名>
   @DATE_MESSAGE DATETIME
AS
   SELECT SUM(COUNT) FROM <表名> WHERE DATE<@DATE_MESSAGE AND TYPE=(SELECT TYPE FROM <表名> WHERE DATE = @DATE_MESSAGE)

--执行这个存储过程
EXECUTE <存储过程名> <你传进的日期>


不知道你开始传进去的值是不是日期,你没有描述清,我就只当传的是日期来写了,希望可以帮到你!

beyond challenge!
2013-03-21 23:07
Aviva_Wang
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:苏州
等 级:贵宾
威 望:26
帖 子:701
专家分:2382
注 册:2013-3-12
收藏
得分:15 
这个应该是你要的查询语句吧
select distinct [type]
,(select sum([a.count]) from tables  a where a.[type]=t.[type] )
 from tables  t

asp
2013-03-22 07:48
Aviva_Wang
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:苏州
等 级:贵宾
威 望:26
帖 子:701
专家分:2382
注 册:2013-3-12
收藏
得分:0 
这个是我验证过的代码
select distinct [type]
,(select sum([count]) from tables  a where a.[type]=t.[type] ) as sum_count
 from tables  t

asp
2013-03-22 07:59
kamishiro
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2013-3-21
收藏
得分:0 
回复 4楼 Aviva_Wang
应用的时候遇到点麻烦,比如我的原始表是前三列,ID,DATE,TYPE,
但是这个count不是我原始表里的,而是比如select  ****(一系列运算) as count,我查询的时候运算得出新的一列,这样我这个代码怎么改啊?
2013-03-22 09:47
kamishiro
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2013-3-21
收藏
得分:0 
回复 4楼 Aviva_Wang
A    B            C    D    E     F        G             H
ID    date          type    count    ratio    total    sum_count    remain
1    2012/1/1    a    2000    30%    1000      1000            600
2    2012/1/2    a    500    50%    1000      400            250
3    2012/1/3    b    300    40%    1000      1000            120
4    2012/1/4    a    800    20%    1000      150            150
5    2012/1/5    b    1500    10%    1000      880            150
                           
单元格    公式                        
G3    F7-SUMIFS($H$3:$H$7,$C$3:$C$7,C7,$B$3:$B$7,"<"&B7)                        
H3    MIN(D3*E3,G3)                        
疯了,不好意思,我真实要实现的是这样的效果,这是我在excel里做的公式,A-F是原始表,我要得出这全部表,这原始表名比如就是data_raw
2013-03-22 10:25
Aviva_Wang
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:苏州
等 级:贵宾
威 望:26
帖 子:701
专家分:2382
注 册:2013-3-12
收藏
得分:0 
用数据库函数,将我上面写的作为函数(Function),让后再用sql语句查询,最后一列调用函数

asp
2013-03-24 09:28
快速回复:关于sql中计算的问题
数据加载中...
 
   



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

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