我要统计按层次分组的数据,要怎么实现?
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