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表的uid1.要统计出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,要怎么才能实现这样的统计?

解决方案 »

  1.   


    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
    select [cname],SUM(pig)as pig,SUM(cow) as cow,SUM(sheep) as sheep from  [Text].[dbo].[QQ]  where [time] ='2011-1-11'  group by [cname]