TQUERY问题(50分)

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

HON

Unregistered / Unconfirmed
GUEST, unregistred user!
请问如何对TQUERY查询的结果集进行修改,加工等操作.
1.数据库CDKZ结构如下:(MS SERVER200)
CDH RQ JS ZL IO
000001 2002-5-1 100 1500 I
000002 2002-5-2 50 750 O
000003 2002-5-2 100 1500 I
000004 2002-5-2 50 750 0

TQUERY1的SQLSTRING如下:
SELECT CDH,RQ,(SELECT JS FROM CDKZ A1 WHERE A1.IO='I' AND A1.IO=A.IO AND A1.CDH=A.CDH) AS JC_JS,(SELECT ZL FROM CDKZ A1 WHERE A1.IO='I' AND A1.IO=A.IO AND A1.CDH=A.CDH)AS JC_ZL,(SELECT JS FROM CDKZ A1 WHERE IO='O' AND A1.IO=A.IO AND A1.CDH=A.CDH)AS CC_JS,
(SELECT ZL FROM CDKZ A1 WHERE A1.IO='O' AND A1.IO=A.IO AND A1.CDH=A.CDH) AS CC_ZL FROM CDKZ A ORDER BY RQ,CDH,IO

结果为:
CDH RQ JC_JS JC_ZL CC_JS CC_ZL
000001 2002-5-1 100 1500
000003 2002-5-2 100 1500
000002 2002-5-2 50 750
000004 2002-5-3 50 750

问: 如何增加一行,获得JC_JS,JC_ZL,CC_JS,CC_ZL 的合计数?能不用临时表实现吗?
 
select jc_js=sum(case io when 'i' then js else 0 end),
jc_zl=sum(case io when 'i' then then zl else 0 end),
cc_js=sum(case io when 'o' then js else 0 end),
cc_zl=sum(case io when 'o' then zl else 0 end)
from tablename
上面的也可以加 cdh,然后 group by cdh就行了
 
TO UGVANXK:
如何实现先明细,最后一行合计的功能.
 
显示合计的功能很简单,但是我觉得你没有必要
把合计好的的结果存到数据集中去
如果你用dbgrid显示结果,只要用几个label显示合计值就行了,合计值只要
把dataset循环一下就得到了
如果在报表中实现上述功能,只要几个qrExpr控件就行,表达式为sum(JC_JS)就行了!
 
我原意是用一句SQL完成,或能否向结果集插入新的记录,存入合计数.
 
后退
顶部