SQL中的GROUP BY问题(20分)

  • 主题发起人 主题发起人 binjinsx
  • 开始时间 开始时间
B

binjinsx

Unregistered / Unconfirmed
GUEST, unregistred user!

在DELPHI 3 中如何使用SQL中的GROUP BY
例如
select 部门,sum(考核分),count(学历),...from
tablename
group by 部门
可是这样在运行时会出错。
请给予解答,最好举个例子。
 
是local sql吧?
local sql有限制, 所有单独的字段都得在group by里出现
 
eYes:不出现了吗?
Local sql 还是不用的好,
中文可能是问题,讨厌中文字段名
 
中文字段不是sql的事, 是数据库的事
 
group by 后面跟的字段必须和SELECT 后面的对应,所以你可以这样写
select 部门
from tablename
group by 部门
或者
select 部门,sum(考核分),count(学历),...
from tablename
group by 部门,sum(考核分),count(学历),...
这样的话先按部门分,然后按其次字段顺序分组
 
Select 部门,Sum(考核分),Count(学历) From tablename
group by 部门
没有问题,问题在你的'...'中
 
我也碰到过这种情况,但是有时可用有时又不可用,LOCAL SQL真奇怪!
 
LOCAL SQL只是有一些限制,你说的语句肯定行,关键在你的...中
必须符合LOCAL SQL, 尽量不用中文字段名,
 
Select 部门,Sum(考核分),Count(学历) From tablename
group by 部门
没有问题,问题在你的'...'中必须都是使用集合函数的字段
 
select 部门,考核分,学历,...
from tablename
group by 部门

就没错了
SUM()和COUNT()返回的是一个值,怎么GROUP呀

 
唉,来晚了。wangkun,banton说的没错,奈何说的有问题。另外group by 后的字段数也有限制(不过本例中无此问题,只是提醒大家)。
to Another_eYes:c/s 中也是一样
to binjinsx:如照wangkun,banton两位老兄说的做了仍有错,能否把错误信息给大家参考参考。
 
group br xxxx
xxxx - 要是key 或 索引(单一字段).

 
taoqg:你错得太远了。
binjinsx:怎么还没有找找到答案吗。
‘select 部门,sum(考核分),count(学历)
from tablename
group by 部门’
只要把中文换成英文,绝对没错。
 
照你写的在LOCAL也没有错,小天和奈何说的都不对,
没有组函数的字段都是要放在后面。
 
select 部门,sum(考核分),count(学历),...
from tablename
group by 部门

关键在你的 ...中,如果其中为 聚集函数据 应该没问题,如果有其它FIELDNAME,

则请在GROUP BY中原样加上 ;)
 
count和sum不能同时出现!
 
最好看Delphi 3中的具体报的是什么错误.

你用的是dbf 还是Db, or Another.

有两种可能性, 一是语言驱动加载错误.
另一种是你用的数据库不支持Count(学历) 这种方式,
试着用Count(*), 看看报不报错.
 
改为:
select 部门,sum(考核分),count(部门),...from tablename group by 部门
 
晓茶好像给我讲过
这样因该把groupby 放到Where中作为条件的一部分
to CJ:
同意观点
 
后退
顶部