日期:2014-05-18  浏览次数:20729 次

我要统计按层次分组的数据,要怎么实现?
A表
uid name town village
1 aa 2 4
2 bb 3 5
3 cc 2 4
4 dd 2 6
B表
cid cname level fatherid
 1 A县 1 NULL
 2 B镇 2 1
 3 C镇 2 1
 4 D村 3 2
 5 E村 3 2
 6 F村 3 3
C表
uid time pig cow sheep
 1 2011-11 2 3 4
 1 2011-12 5 6 7
 2 2011-11 8 9 10
 2 2011-11 11 12 13
 2 2011-11 14 15 16
A表的town对应B表level为2的cid
A表的village对应B表level为3的cid
B表的镇的fatherid为县的cid,村的fatherid为镇的cid
C表的uid对应A表的uid

1.要统计出A县下B镇的动物数量和C镇的动物数量
cname pig cow sheep
 B镇 40 45 50
 C镇 0 0 0
B镇下有D、E村,D村下有aa、cc,E村下有bb,C镇下F村只有dd,在C表没有数据,所以得到的是以上的数据

2.B镇下下D村E村各自的动物数量的数量
cname pig cow sheep 
D村 7 9 11
E村 33 36 39

依照我上面给的几张表的数据要得到以上这样的两组结果。。。。
我要把这个结果绑定到ReportViewer,要怎么才能实现这样的统计?

------解决方案--------------------
SQL code

SELECT     QQ_1.uid, QQ_1.name, QQ_1.town, QQ_1.village, QQ_1.cid, QQ_1.cname, QQ_1.[level], QQ_1.fatherid, r.uid AS Expr1, r.time, r.pig, r.cow, r.sheep
FROM         (SELECT     a.uid, a.name, a.town, a.village, b.cid, b.cname, b.[level], b.fatherid
                       FROM          dbo.A AS a LEFT OUTER JOIN
                                              dbo.B AS b ON b.cid = a.town) AS QQ_1 LEFT OUTER JOIN
                          (SELECT     uid, time, pig, cow, sheep
                            FROM          dbo.C) AS r ON r.uid = QQ_1.uid