这个sql语句为什么出错?(100分)

  • 主题发起人 Wanderingtalk
  • 开始时间
W

Wanderingtalk

Unregistered / Unconfirmed
GUEST, unregistred user!
with query1 do
begin
close;
SQl.Clear;
SQL.add('select xm,sum(gz),sum(jj) ');
sql.add('from(select xm,sum(gz) gz,sum(jj) jj from ck group by xm union all select xm,max(gz) gz,Max(jj) jj from rk group by xm ) temp group by xm)
end;

提示第二个select非法使用,到底是什么原因,其他的sql语句可以通过,只有在使用
union all 时提示错误。
 
sql.add('from(select xm,sum(gz) gz,sum(jj) jj from ck group by xm union all
select xm,max(gz) gz,Max(jj) jj from rk group by xm ) temp group by xm')
后面是不是少了一个引号
 
sql.add('from(select xm,sum(gz) gz,sum(jj) jj from ck group by xm union all select xm,max(gz) gz,Max(jj) jj from rk group by xm ) temp group by xm')
少个点

主要原因是union all
和 temp 有可能是出错的原因
 
sql.add('from(select xm,sum(gz) gz,sum(jj) jj from ck group by xm union all select xm,max(gz) gz,Max(jj) jj from rk group by xm ) temp group by xm');//你少写了个引号,是不是这个原因?
 
缺少引号是我的笔误,实际程序中有引号,还是出错,"invalid token select line 2"
 
你用的是什么数据库?有的不支持union all这种用法。
 
是这个原因,与union all无关。
在paradox数据库中,在一个查询中不能包含子查询,例如不能这样写:
select * from (select xm from ck) temp;
这样就会报错。
所以你要想办法改写改写你的SQL,去掉子查询。这和union all的使用无关。
 
不能用子查询
 
with query1 do
begin
close;
SQl.Clear;
SQL.add('select xm,sum(gz),sum(jj) ');
sql.add('from((select xm,sum(gz) gz,sum(jj) jj from ck group by xm) union all (select xm,max(gz) gz,Max(jj) jj from rk group by xm) ) temp group by xm)
end;
 
paradox不支持这样的写法
 
我试过天真的写法,还是不行!是否不能用union all?
 
xm,sum(gz),sum(jj)
的行数不对的,所以会出错
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
762
import
I
I
回复
0
查看
754
import
I
S
回复
0
查看
846
SUNSTONE的Delphi笔记
S
顶部