有一表list1:
字段 f1 f2 f3 f4 f5 f6 f7 f8 f9 f10
记录1 a b c m m m m 1 2 3
记录2 d e f m m m m 4 5 6
记录3 g h h i j k o 12 13 14
.
.
想用一SQL语句,使其生成另外一个表list2:(凡list1中,f4,f4,f6,f7四个字段相同的记录,f8,f9,f10都要累加,全并成一条记录)
字段 f1 f2 f3 f4 f5 f6 f7 f20 f30 f40
记录1 a b c m m m m 5 7 9
记录2 g h h i j k o 12 13 14我用这样的语句:
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
F_DM2.ClientDataSet1.Close;
F_DM2.ClientDataSet1.CommandText:='select f1,f2,f3,f4,f4,f6,f7,sum(f8) as f20,smu(f9) as f30,sum(f10) as f40 into list2 from list1 group by f4,f4,f6,f7;
F_DM2.ClientDataSet1.Execute;
F_DM2.ClientDataSet1.Open;
F_DM2.ClientDataSet1.Refresh;
end;
end.
结果出错:“list1.f1在选择列表中无效,因为该列既不包含在聚合函数中,也不包含在group by句子中。”
字段 f1 f2 f3 f4 f5 f6 f7 f8 f9 f10
记录1 a b c m m m m 1 2 3
记录2 d e f m m m m 4 5 6
记录3 g h h i j k o 12 13 14
.
.
想用一SQL语句,使其生成另外一个表list2:(凡list1中,f4,f4,f6,f7四个字段相同的记录,f8,f9,f10都要累加,全并成一条记录)
字段 f1 f2 f3 f4 f5 f6 f7 f20 f30 f40
记录1 a b c m m m m 5 7 9
记录2 g h h i j k o 12 13 14我用这样的语句:
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
F_DM2.ClientDataSet1.Close;
F_DM2.ClientDataSet1.CommandText:='select f1,f2,f3,f4,f4,f6,f7,sum(f8) as f20,smu(f9) as f30,sum(f10) as f40 into list2 from list1 group by f4,f4,f6,f7;
F_DM2.ClientDataSet1.Execute;
F_DM2.ClientDataSet1.Open;
F_DM2.ClientDataSet1.Refresh;
end;
end.
结果出错:“list1.f1在选择列表中无效,因为该列既不包含在聚合函数中,也不包含在group by句子中。”
解决方案 »
- 还以为啥delphi病毒,原来只是针对低版本的。。
- virtual和abstract有什么区别
- 新人求助关于类的构造和封装问题
- 求助:本人刚接触Delphi,有个问题向前辈们请教
- 排序的問題
- 有谁知道有什么API函数可以监控某一特定应用程序对系统发送的消息
- 怎么建表?
- 用adoquery查询运程数据库时,如查询未完成form不能动了,该如何处理?
- 关于InstallShiled制作安装文件问题,如何在安装中途设置重启,在重启后又能回到下一个安装步骤?
- 在窗口完全显示后立刻执行某些操作,代码应该放在何处?
- 今天发现被公司炒了,麻烦大家介绍个工作,捧捧场,并帮我估个价
- 请问在DELPHI中如何用程序判断系统中有某个程序在运行,如在运行,怎么才能关闭它?
运行会出错,看来楼主对SQL语句不熟悉还要多加练习.
我按旺仔的说法改了,但生成的list2跟list1的记录完全一样,根本没有累加,只是f8,f9,f10变成了f20,f30,f40而已。
在'select f1,f2,f3,f4,f4,f6,f7,sum(f8) as f20,smu(f9) as f30,sum(f10) as f40 into list2 from list1 group by f1,f2,f3,f4,f4,f6,f7'中,我看不出我的累加条件:凡list1中,f4,f4,f6,f7四个字段相同的记录,f8,f9,f10都要累加。
网友说:“group是分组,就是把有相同字段值的记录进行汇总,成一组”,所以我以为group by后面就是f4,f4,f6,f7四个字段相同的记录。
以上是我没解决的问题以及我的困惑。请朋友继续点拨。谢谢!
你试一下这条语句是不是你想要的.select f4,f5,f6,f7,sum(f8) as f20,smu(f9) as f30,sum(f10) as f40 into #list2 from list1 group f4,f5,f6,f7
我的意思是:表list1中,有f1 f2 f3 f4 f5 f6 f7 f8 f9 f10字段中,要求对凡是f4 f5 f6 f7四个字段相同的记录,就要合并它的f8 f9 f10字段。楼顶上的表看清楚中吗?
运行这条语句产生的.
你可以用这条语句把这个表删除IF EXISTS (SELECT * FROM SYSOBJECTS WHERE [NAME]='#LIST1' AND TYPE='U')
DROP TABLE #LIST
不帮你了,自己找别的高手搞定了,还是多看些SQL方面的书吧,一些专业的术语都
不知道怎么叫 合并应该叫求和.faint!!!!!!!!!!!!!!!!!!