| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3270 人关注过本帖
标题:将一个表中所有数值类型求和,形成一条记录放到新表中
只看楼主 加入收藏
baichuan
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:37
帖 子:953
专家分:589
注 册:2006-3-13
结帖率:93.55%
收藏
已结贴  问题点数:20 回复次数:17 
将一个表中所有数值类型求和,形成一条记录放到新表中
表中的结构数不能确定,就是不能一个个sum,怎么做?
搜索更多相关主题的帖子: 记录 
2016-08-01 18:26
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10552
专家分:42996
注 册:2014-5-20
收藏
得分:0 
看不明
试举个例吧
2016-08-01 19:08
lxlsf
Rank: 2
等 级:论坛游民
帖 子:31
专家分:13
注 册:2014-10-10
收藏
得分:0 
用“total”命令呀
如果要分类汇总,要先索引
use 表
inde on 字段 to aaa
tota on 字段 to 新表 &&此处字段要与索引字段一致

如果只生成一条全部汇总记录
新建一个字段,该字段所有记录值都一样 比如都为“1”
然后以这个字段索引然后在“total”汇总就可以了

[此贴子已经被作者于2016-8-1 21:13编辑过]

2016-08-01 21:09
厨师王德榜
Rank: 18Rank: 18Rank: 18Rank: 18Rank: 18
等 级:贵宾
威 望:199
帖 子:988
专家分:4946
注 册:2013-2-16
收藏
得分:5 
楼上的方法,适合已经知道表结构的情况,如果你事先不知道表结构,或者表结构随时变化,那么你Total on ??? 什么呢,你知道这时候这里该填啥?
所以,大家看看下面的方法:下面的方法,即使不知道表结构,也能实现求和。
*大致说一下思路,代码需要你自己具体化,不然只伸手,对你没好处。
*先取得表结构:
select top 1 * from 主表 into cursor  tempTab readwrite
*在所有列之间循环。
select 主表
for i =1 to fcount()
    * 当检测到某列是以下类型的时候:
    if vartype(...) = 数值型、整形、双精度、单精度、货币
       * 求和该列
        sum ... to 临时变量
        update tempTab set ...=临时变量
    endif
endfor
* 最后,把临时表追加到主表最后,完毕。

[此贴子已经被作者于2016-8-1 21:19编辑过]

2016-08-01 21:16
lxlsf
Rank: 2
等 级:论坛游民
帖 子:31
专家分:13
注 册:2014-10-10
收藏
得分:10 
版主说得不错,但是按照版主的方法稍显复杂,其实如果按楼主所说只生成一条汇总记录的话,即使不知道表结构也可以按以下方式
alter table 表 add  px_1 (c,1)  &&如果怕新增字段重复,可以加一句检测语句
repl all px_1 with "1"
inde on px_1 to aa
tota on px_1 to 新表
ALTER TABLE 表 DROP COLUMN px_1

[此贴子已经被作者于2016-8-1 21:34编辑过]

2016-08-01 21:29
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
收藏
得分:1 
结构数不能确定是指什么
2016-08-01 21:55
wengjl
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:109
帖 子:2202
专家分:3862
注 册:2007-4-27
收藏
得分:1 
回复 6楼 tlliqi
估计是指哪几个是数值型字段是未知的或者叫不确定的

只求每天有一丁点儿的进步就可以了
2016-08-02 08:06
baichuan
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:37
帖 子:953
专家分:589
注 册:2006-3-13
收藏
得分:0 
表结构会随时因业务需求而变化,我做的是变动的,除了取表结构循环求和,没有其他简便方法么?

2016-08-02 08:16
baichuan
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:37
帖 子:953
专家分:589
注 册:2006-3-13
收藏
得分:0 
以下是引用lxlsf在2016-8-1 21:29:54的发言:

版主说得不错,但是按照版主的方法稍显复杂,其实如果按楼主所说只生成一条汇总记录的话,即使不知道表结构也可以按以下方式
alter table 表 add  px_1 (c,1)  &&如果怕新增字段重复,可以加一句检测语句
repl all px_1 with "1"
inde on px_1 to aa
tota on px_1 to 新表
ALTER TABLE 表 DROP COLUMN px_1


你这是算出来有多少条记录吧?感觉是count的功能了?

2016-08-02 08:18
baichuan
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:37
帖 子:953
专家分:589
注 册:2006-3-13
收藏
得分:0 
以下是引用厨师王德榜在2016-8-1 21:16:44的发言:

楼上的方法,适合已经知道表结构的情况,如果你事先不知道表结构,或者表结构随时变化,那么你Total on ??? 什么呢,你知道这时候这里该填啥?
所以,大家看看下面的方法:下面的方法,即使不知道表结构,也能实现求和。
*大致说一下思路,代码需要你自己具体化,不然只伸手,对你没好处。
*先取得表结构:
select top 1 * from 主表 into cursor  tempTab readwrite
*在所有列之间循环。
select 主表
for i =1 to fcount()
    * 当检测到某列是以下类型的时候:
    if vartype(...) = 数值型、整形、双精度、单精度、货币
       * 求和该列
        sum ... to 临时变量
        update tempTab set ...=临时变量
    endif
endfor
* 最后,把临时表追加到主表最后,完毕。

嗯,你的想法和我现在做的一样,我有个表结构表,循环计算,这样太不精简了,想找大侠看看有没有简单的!

2016-08-02 08:19
快速回复:将一个表中所有数值类型求和,形成一条记录放到新表中
数据加载中...
 
   



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

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