有才的漂亮妹妹关于delphi在编制查询系统和生成报表的问题,解答者有意外收获!(200分)

  • 主题发起人 主题发起人 maomao888
  • 开始时间 开始时间
M

maomao888

Unregistered / Unconfirmed
GUEST, unregistred user!
本人在编写了一段查询统计的SQL语句,希望能在[red]一个DBGIRD中[/red]显示:SELECT 中的所有字段:如 b.cbzxmc, b.ccpnjh/12, b.bcpnjh/12, sum(a.drcl) ,此外在同一个DBGRID中还显示:[blue]sum(a.drcl)/(b.ccpnjh/12),[/blue]和 sum(a.drcl)/b.bcpnjh/12的值。该查询要实现在如下的SQL语句后再如何实现。
select b.cbzxmc,b.ccpnjh/12,b.bcpnjh/12,sum(a.drcl) from t_scrbmx a,erptest.t_acpczjh b
where b.cbzxbh=a.jgbh and a.rq>'2001-9-26' and a.rq<'2001-10-26'
group by b.cbzxmc,b.ccpnjh,b.bcpnjh
union all
select b.cbzxmc,b.ccpnjh/12,b.bcpnjh/12,sum(c.drcl) from db2admin.t_scrbmxc,erptest.t_acpczjh b
where b.cbzxbh=c.jgbh and c.rq>'2001-9-26' and c.rq<'2001-10-26' and c.wlbh like '%-%'
group by b.cbzxmc,b.ccpnjh,b.bcpnjh
注:此外,该程序执行真的是没有错误,但 第一段和第二段的SQL不同之处在于:第一段中的 sum(a.drcl)是统计的结果和,第二段中的sum(c.drcl)是统计的结果是取于同一个字段,但因为对其的条件不同,所以结果也不同的。本人希望将两种结果同时统计出来,并放在同一个DBGRID中的两个字段显示。
第一个sum(c.drcl)已经实现,并给了一个字段,但第二个无法实现。
[purple] 同时本人希望的这两个统计结果的字段和前SELECT中选取取的以及计算后的结果,均在同一个DBGRID中以不同的字段显示结果[/purple]。结果了有意外的收获啦。
 
改为下面这样试试:
select b.cbzxmc,b.ccpnjh/12,b.bcpnjh/12,sum(a.drcl),0 from t_scrbmx a,erptest.t_acpczjh b
where b.cbzxbh=a.jgbh and a.rq>'2001-9-26' and a.rq<'2001-10-26'
group by b.cbzxmc,b.ccpnjh,b.bcpnjh
union all
select b.cbzxmc,b.ccpnjh/12,b.bcpnjh/12,0,sum(c.drcl) from db2admin.t_scrbmxc,erptest.t_acpczjh b
where b.cbzxbh=c.jgbh and c.rq>'2001-9-26' and c.rq<'2001-10-26' and c.wlbh like '%-%'
group by b.cbzxmc,b.ccpnjh,b.bcpnjh
 
谢谢,但还是不能将第二个SUM付给另一个字段,因中UNION ALL只能成行显示的。我希望两个SUN
成列显示。
 
由于我现在是在单位上上网,而这儿的机器上没有安装Delphi,只能跟MM说明白,我明天下班后回家再试了,希望MM见谅
 
我有点明白你的意思了,你改为这样试试,看看能不能达到你的要求:
select b.cbzxmc,b.ccpnjh/12,b.bcpnjh/12,sum(a.drcl) as sum_a,sum(c.drcl) as sum_c
from t_scrbmx a,erptest.t_acpczjh b,db2admin.t_scrbmx c
where b.cbzxbh=a.jgbh and a.rq>'2001-9-26' and a.rq<'2001-10-26'
b.cbzxbh=c.jgbh and c.rq>'2001-9-26' and c.rq<'2001-10-26' and c.wlbh like '%-%'
group by b.cbzxmc,b.ccpnjh,b.bcpnjh
由于不知道你的具体的表结构,我用ACCESS作了一简单的例子,如果要的话就Email给我。
 
后退
顶部