D daiqingbo Unregistered / Unconfirmed GUEST, unregistred user! 2000-08-06 #1 想将合计字段和原字段并列输出。如表的数据为 a 3 5 6 7 8 想输出 a b 3 3 5 8 6 14 7 21 8 29 要求只用一条sql语句
F foolaliu Unregistered / Unconfirmed GUEST, unregistred user! 2000-08-06 #2 用一条语句好像有的困难。 为什么不用游标之类的语句呢?
I iie Unregistered / Unconfirmed GUEST, unregistred user! 2000-08-06 #3 此题无解 一定是一个程序段来完成 对记录间的数据处理,查询语言先天不足
T tianrei Unregistered / Unconfirmed GUEST, unregistred user! 2000-08-06 #4 sql是高度过程化的查询语言, 一条语句对此题有难度, 对我来说是无解!
温 温柔一刀 Unregistered / Unconfirmed GUEST, unregistred user! 2000-08-07 #5 此功能可以实现,条件是这个表存在一个不重复的递增字段,与每一条记录顺序相同。 比如你这个例子,字段a本身就可以担当此任,因此: select a,(select sum(a) from aaa x where x.a<=y.a) as b from aaa y 如果有一个递增主码字段,例如叫做AID,则把上面语句中x.a<=y.a改为x.aid<=y.aid即可。 如果不满足这个条件,就无法实现了。 实际上,产生这种查询需求恐怕都来自于按时间或发生顺序进行统计的要求, 因此应该有这种字段存在,否则只能说表设计的不合理。 一般SQL的问题难不倒我
此功能可以实现,条件是这个表存在一个不重复的递增字段,与每一条记录顺序相同。 比如你这个例子,字段a本身就可以担当此任,因此: select a,(select sum(a) from aaa x where x.a<=y.a) as b from aaa y 如果有一个递增主码字段,例如叫做AID,则把上面语句中x.a<=y.a改为x.aid<=y.aid即可。 如果不满足这个条件,就无法实现了。 实际上,产生这种查询需求恐怕都来自于按时间或发生顺序进行统计的要求, 因此应该有这种字段存在,否则只能说表设计的不合理。 一般SQL的问题难不倒我
张 张域 Unregistered / Unconfirmed GUEST, unregistred user! 2000-08-08 #6 这个问题可以这样解决: SELECT SourceField, Sum(AnotherField) FROM aTable GROPU BY SourceField 去试吧!
D daiqingbo Unregistered / Unconfirmed GUEST, unregistred user! 2000-08-10 #7 这几天上不了大富翁,现在刚好又重装了windows。等试验过了再给各位加分。 倾向于温柔一刀。对张域的方法持怀疑态度,不过还是会试验。 温柔一刀:就估计你会出刀 不过你的方法效率如何?比如很多财务系统,借方、贷方, 余额的实现使用这种方法吗?
这几天上不了大富翁,现在刚好又重装了windows。等试验过了再给各位加分。 倾向于温柔一刀。对张域的方法持怀疑态度,不过还是会试验。 温柔一刀:就估计你会出刀 不过你的方法效率如何?比如很多财务系统,借方、贷方, 余额的实现使用这种方法吗?
温 温柔一刀 Unregistered / Unconfirmed GUEST, unregistred user! 2000-08-10 #8 天那!这是标准的内外表关联查询,和效率有什么关系? 支持SQL的系统都一样,绝不比你做任何一个带sum的查询慢! >>就估计你会出刀 我只关心有一定难度的的问题,所以你的估计是对的, 希望以后问题多多(谁仍砖头?)
天那!这是标准的内外表关联查询,和效率有什么关系? 支持SQL的系统都一样,绝不比你做任何一个带sum的查询慢! >>就估计你会出刀 我只关心有一定难度的的问题,所以你的估计是对的, 希望以后问题多多(谁仍砖头?)
L lishding Unregistered / Unconfirmed GUEST, unregistred user! 2000-08-11 #9 是否一定要用SQL语句实现? 写程序可解决: 在TTable 或 TQuery 中增加一计算字段 : b 在OnCalcFields 事件中加入以下代码: var temp_b:integer; // 为全局变量,在Table1打开前置0; begin temp_b:=temp_b+ Table1.fieldbyname('b').asinteger; Table1.fieldbyname('b').asinteger:=temp_b; end;
是否一定要用SQL语句实现? 写程序可解决: 在TTable 或 TQuery 中增加一计算字段 : b 在OnCalcFields 事件中加入以下代码: var temp_b:integer; // 为全局变量,在Table1打开前置0; begin temp_b:=temp_b+ Table1.fieldbyname('b').asinteger; Table1.fieldbyname('b').asinteger:=temp_b; end;