以前报表sql语句没有用union,两次分组,现在用union了,发现问题大了! (7分)

  • 主题发起人 主题发起人 freesoft
  • 开始时间 开始时间
F

freesoft

Unregistered / Unconfirmed
GUEST, unregistred user!
以前有一张分组报表,没有用union现在由于一些原因要用到union,
sql为
select jpxs.jpid,(jpxs.jpdj+tp.jpdj) as jpdj from jpxs,jplb,tp
where (jpxs.jplb=jplb.jplb) and (jpxs.jpid=tp.jpid)
union
(select jpxs.jpid,jpxs.jpdj from jpxs
where jpxs.jpid not in (select jpid from tp)
)
order by jpxs.jpid
可是发现问题大了,记录是先一会儿国内,一会儿国际,
完全是比较乱的,不知道怎么解决!
与此相关的问题是http://www.delphibbs.com/delphibbs/dispq.asp?lid=1013816
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1026202
 
我很久没做程序了,不过,我的印象是union应该是把两边的记录进行组合,就是如果是第二个条件语句没有的记录,他们也会显示出来,为了避免重复,您应该把条件定得一样,或把第二句的括号去掉试一市
 
select a.jpid,a.jpdj+b.jpdj
from jpxs as a,(select jpid,sum(jpdj) as jpdj from tp group by tp.jpid) as b
where a.jpid=b.jpid
union
(select jpid,jpdj
from jpxs
where jpid not in (select jpid from tp))
order by a.jpid
 
我在思考中....
 
select a.jpid,a.jpdj+b.jpdj
from jpxs as a,(select jpid,sum(jpdj) as jpdj from tp group by tp.jpid) as b
where a.jpid=b.jpid
union
(select jpid,jpdj
from jpxs
where jpid not in (select jpid from tp))
order by a.jpid
代码已经在analyzer中通过,不过在写入delphi中出错。
报表还是反映不出来,好象用union不是作为一张表来反映的,而是先打印union前的
后打印union后的,我用的fastreport,分组是用到了另外的两张表中的字段jplb,jpld
分别代表类别,领地。
 
把query里的数据先显示出来看看有没有问题
 
是不是order by的问题?
Tools--》 Explore中试验了没有?
 
现在query里的field都表示有点问题,因为我用了别名,看也看不到啊
 
union前后的select语句分别加上()试试~
样式是这样的 : (select。。。。。。。)
union
(select 。。。。。。。)
 
用了别名之后,怎么处理adoquery的field呀。
报表中要用到。
 
不知道你想得到什么结果!这样试试吧!
select jpxs.jpid,(jpxs.jpdj+tp.jpdj) as jpdj from jpxs,jplb,tp
where (jpxs.jplb=jplb.jplb) and (jpxs.jpid=tp.jpid) order by jpxs.jpid
union
(select jpxs.jpid,jpxs.jpdj from jpxs
where jpxs.jpid not in (select jpid from tp)
order by jpxs.jpid
)

 
后退
顶部