请问怎样在数据库中每隔一定记录则插入一行合计,或是只在显示及打印时能看到这些合计?谢谢!(100分)

  • 主题发起人 主题发起人 doudou
  • 开始时间 开始时间
我不太明白你的问题。能讲清楚一点吗?
 
当然可以,用如下union即可。
select typeid,cast(quantity as integer) as Q from stock
union
select typeid,cast(sum(quantity) as integer) as Q from stock
group by typeid
order by ...
 
Hi, doudou
对于数据库还需强调一点,它是所有具有相同结构的数据的总和;从你的问题来看,
你对何为数据库,其特性是什么还比较模糊!倘若你真的对数据库了解的比较深,
我想你就不会提出这样的问题了!?
由于数据库独特的数据结构,因而不能象报表那样隔几行来个合计之类的,但若作为
每个记录都有的结构,可将合计的性能作为一个字段,但这样无异于画蛇添足。当显示
或打印数据库内容时,可利用数据库提供的统计函数如Foxbase的Sum、Total等进行
合计,也可以自己编写一段统计过程,这样能够灵活一些。但万万不可按你的方法
来做,那是行不通的!
 
上面我说的办法只是在查询中生成数据,这办法是不正矩,至少我没用过。但
在显示上也许这样做比较好些。打印中办法就更多了,不用我说了吧。
 
我确实是刚涉及数据库的编程。有这样一个数据库,涉及各班级各人各科的成绩及平均成绩。如下:

班名 姓名 语文 数学 每人平均成绩

每班每科平均成绩

(最后)
总年级每科平均成绩

因为每班只几个人,因此要求把各班合在一起显示(不是报表这样不直接的显示,我用的是dbgrid)和打印。我在以前各大虾的问答中找到一种方法:
select 班名 Sum(语文) Sum(数学) from mytable group by 班名,
可得到一个有上述字段的一个新库;但用INsert ... select(同上)则总是出错,不知为何?
 
>可得到一个有上述字段的一个新库;但用INsert ... select(同上)则总是出错,不
知为何?
你为什么要生成新库?
你可以让你的dbgrid或报表用query作为数据源,sql就是
select 班名 Sum(语文) Sum(数学) from mytable group by 班名

用新库的话,如果原来库的内容改变了,而新库不变,多讨厌

>班名 姓名 语文 数学 每人平均成绩
>每班每科平均成绩
>(最后)总年级每科平均成绩
这个库结构里,所有的平均成绩都不要作为字段名,而在你自己的程序中计算
 
为什么一定要用dbgrid?换一个灵活一点的比如stringgrid,总之不是数据感知的,那么
不就不必在表的计算中费劲了吗,而且打印和显示的控制都很灵活,和乐而不为呢?
 
在报表中可以按照班机设置DetailBand, GroupBand很容易.

在Form中不应该将数据和统计组合在一个Grid中显示, 可以另作一个Query专门做统
计用, 并显示在单独的表中.
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
I
回复
0
查看
679
import
I
后退
顶部