SQL的问题?(50分)

  • 主题发起人 honor_53
  • 开始时间
H

honor_53

Unregistered / Unconfirmed
GUEST, unregistred user!
表如下
ID  Number
01 100
0101 50
0102 80
010101 60
如果用SQL查询出(以所属ID)如下
ID Number
01 290
0101 110
0102 80
010101 60
 
不能实现,还是闲分太少了呢?
如果能快一点告诉的话,我会有加分的!
 

SELECT ID,SumData=(SELECT SUM(T1.Number) FROM Table1 T1 WHERE T1.ID LIKE Table1.ID+'%') FROM Table1
 
SELECT ID ,SUM(NUMBER) AS NUMBER FROM TABLE
where id like '01%'
GROUP BY ID
 
都不对吧!
 
//一条语句要实现上述功能很难,可循环用下面语句查出,先放到临时表中,再在临时表中读取。
//其中2为'01'的长度
select substr(id,1,2) as id,sum(number) as number from aa where
substr(id,1,2)='01' group by substr(id,1,2)
 
你是在SQL Server下吗? 如果是,我提供的是可以的,我已经做过实验,数据和结果同你的一致。

SELECT ID,SumData=(SELECT SUM(T1.Number) FROM Table1 T1 WHERE T1.ID LIKE Table1.ID+'%') FROM Table1

Table1为表名,SumData可能要改为Number

请说明你的SQL环境(Access,Oracle,等)。
 
luweizhong, 我也觉得行的!可是我试了半天怎么还是原来的值呢!
’Table1为表名,SumData可能要改为Number‘
这个我都知道的!!:):)
谢谢你呀!我再试一试!!
如果行我会给你加
分的@!

 
luweizhong
为什么我试了半天还不好用呢?
我用的是SQL7.0
 
我用SQL试了一下,答案好象是错的哦。你用的是什么啊??你自己在看看啊!!
 
select id into #tt from aaa
SELECT #tt.id,SUM(NUM) AS NUM FROM aaa,#tt
where (charindex(#tt.id,aaa.id)=1) and #tt.id like #tt.id + '%'
group by #tt.id
相信我,这个一定行的
 
我也试过Luweizhong的是可以的。SQL2000下
 
luweizhong, 最好
 
可以???
我试了好多次,在7.0和2000都不行呀!
真的好用吗?
如果看语句,的确对呀!
运行,没有变化呀!
 
很好实现啊,为什么大家都搞得这么复杂呢?
我用使用两个QUERY控件,已经测试通过(PARADOX库和SQL SERVER库均可),
假设表为TABLE,先为QUERY1增加一个计算出的字段NUMBER1,在QUERY1的ONCACLFIELDS事件添加如下代码:
query2.SQL.Text:='select sum(number) as number from table where id like '''
+query1.fieldvalues['id']+'%''';
query2.Open;
query1.FieldValues['number1']:=query2.FieldValues['number'];
其中QUERY1的NUMBER1就是对应计算出的字段,
还有一种更快的方法就是QUERY2与QUERY1完全相同,通过循环求出字段的统计值,这样QUERY2不用重复查询
是不是很快?给分吧。
欢迎来访原创软件区 http://ycrj.delphibbs.com
 
刚才写错了,应该是 WHERE id like 而不是 where table like,已经更正了
 
接受答案了.
 
顶部