如何根据查询的结果进行分类统计?(10分)

  • 主题发起人 主题发起人 稻草
  • 开始时间 开始时间

稻草

Unregistered / Unconfirmed
GUEST, unregistred user!
用adoquery得出查询结果,用dbgrid显示,如
字段1 字段2 字段3 字段4
a xxx xxx xxx
b xxx xxx xxx
a xxx xxx xxx
c xxx xxx xxx
b xxx xxx xxx
d xxx xxx xxx

然后根据查询结果进行统计,要得到下面的结果 如
字段 字段
a 多少记录
b 多少记录
c 多少记录
d 多少记录
...............
 
select 字段1 count(*) as 字段 from table group by 字段1
 
不好意思,少个逗号。select 字段1,count(*) as 字段 from table group by 字段1
 
小第很笨,那么table是哪里的表?上面的查询结果是不生成表的
只是用dbgrid 来显示,需要根据查询的结果来统计的,说的简单
点就是在几个文本框上显示出统计的结果,多谢了。
 
select sum(case when a is not null then 1 eles 0 end),
sum(case when b is not null then 1 else 0 end),
...
label1.caption:=fields[0].asinstring;//a
label2.caption:=fields[1].asinstring;//b
 
应该把得出上面查询结果的query使用的sql语句与要实现统计功能的sql语句结合到一起,
组成一条语句。
如:上面的query中的sql语句为:select * from 订单表 where 订单数>100
加上统计功能的语句:select 字段1 count(*) as 字段 from 订单表 group by 字段1
where 订单数>100,满意吗?给我分吧!
 
正如sxd781017所说先分组(分组条件用字段1),再用聚集函数count(*)即
可,count(*)即为统计各分组的记录数:
  select field1,count(*) as field1_count from table1 group by field1;
 
给你一个全面的程序段把:
With ADOQuery1 do
begin
Close;
SQL.clear;
SQL.Add('select 字段1, count(*) as 字段 from table1 group by 字段1 order by 字段1');
Prepared:=true;
Open;
Edit1.Text:=FieldByname('字段').asString;
……
end;
 
后退
顶部