实用主义

把.Net用好用足

导航

分组小计合计报表的SQL

Table1结构如下:
OrgName,StaffName, PayArea,Pay
要生成如下形式报表:
Org1,A1,100,4
Org1,A2,100,4
Org1,A3,100,4
Org1小计,XX,XX,XX
Org2,B1,100,4
....
合计,      XX ,XX

SQL:
select  OrgName DD,STAFFNAME,PayArea, Pay,OrgName EE from Table1 t1
union
select OrgName || '小计' DD,'',sum(PayArea),sum(Pay),OrgName||'_' EE from  Table1  t2 group by DEPT_ID
union
Select '合计' DD,'',sum(PayArea),sum(Pay),'ZZZZZZZZ' EE from  Table1

order by ee

其中的OrgName||'_' 是为了取得一个比下一个不同的OraName大一些的值,以便让小计这条数据排在适当的位置,如Org1小计要排在Org1和Org2之间,所以要选一个在数据库中字符排序号小的字符,这里以"_"表示。   'ZZZZZZZZ'则是为了把合计记录排在最后,所以要选一串在数据库中字符排序最大的字符构成的串,这里只是用'Z'来表示。

posted on 2006-12-19 10:13  Render  阅读(3973)  评论(3编辑  收藏  举报