简单的数据统计(100分)

星巴

Unregistered / Unconfirmed
GUEST, unregistred user!
现有一个表
1 2 3

AA 1234567890 2
AA 1234000000 3
AA 1111111111 4
BB 5678111111 2
BB 5678222222 10
结果: 1字段中所有的 2 字段前四个数相同的纪录 3字段求和!
大约有万条纪录,问上述功能如何实现,是SQL还是编写程序做循环。
 
SQL:
query1.SQL.Text := 'Select 字段1 as a, SubString(字段2 from 1 for 4) as b, 字段3 as c from 你的表';
query1.SQL.SaveToFile('Temp.sql');
query1.SQL.Text := 'Select a, b, sum(c) from "Temp.sql" group by a, b';
query1.Open;

另外你也可以试一下:
query1.SQL.Text := 'Select 字段1 as a, SubString(字段2 from 1 for 4) as b, Sum(字段3) from 你的表 group by a, b';
query1.open;
不过我记得BDE不支持这种方式. 所以产生了第一种方法. 记不清了.
 
若你是LOCAL SQL就比较麻烦,若用ORACLE等大型数据库软件就很方便了。
如在ORACLE中,可以这样:
Select 字段1,SubStr(字段2,14), sum(字段3) from table1
group by 字段1,SubStr(字段2,14)
order by 字段1,SubStr(字段2,14)
 
试试:
select 1 as a,distinct substr(2,1,4) as b,sum(distinct substr(2,1,4)) as c
from table1
 
不好意思,写错了,应该是这样:
Select 字段1,SubStr(字段2,1,4), sum(字段3) from table1
group by 字段1,SubStr(字段2,1,4)
order by 字段1,SubStr(字段2,1,4)

 
Select 字段1,SubStr(字段2,1,4), sum(字段3) from table1
group by 字段1,SubStr(字段2,1,4)
 
g:yck and yunshang
 
多人接受答案了。
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
S
回复
0
查看
644
SUNSTONE的Delphi笔记
S
S
回复
0
查看
654
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
顶部