如何从不同的表中汇总coulnms

时间:2016-03-09 06:09:20

标签: sql-server

我目前正在建立一个已建立的数据库,我必须生成已经生成的水量报告,同时根据月份按区域组织...反正这里是我的查询

*SELECT a.read_month, b.zone, ((SELECT SUM(a.water_used) AS Volume  FROM
[TEST_DB].[dbo].[tblBilling] a) + (SELECT SUM(b.water_used) AS Volume  FROM
[TEST_DB].[dbo].[tblTransaction] b)) AS Volume 
FROM [TEST_DB].[dbo].[tblBilling] a, 
[TEST_DB].[dbo].[tblAccounts] b, 
[TEST_DB].[dbo].[tblTransaction] c 

WHERE a.account_no = b.account_no 
GROUP BY a.read_month, b.zone*

这是结果

read_month  zone    Volume
112015       A       460
112015       B       460
112015       C       460
122015       A       460
122015       B       460
122015       C       460

根据我的意图进行分组,但音量完全相同。这是我对结果的看法,因为帐户号码。 11和12属于A区,因此它们的值应添加到区域A和112015的read_month

read_month  zone    Volume
112015       A       80
112015       B       60
112015       C       80
122015       A       60
122015       B       80
122015       C       100

这些是数据来自

的表格

tblBillings

account_no  water_used      read_month
1            20             112015
2            20             112015
3            30             112015
4            30             112015
5            40             112015
6            40             112015
1            30             122015
2            30             122015
3            40             122015
4            40             122015
5            50             122015
6            50             122015

tblTransaction

account_no  water_used        read_month
11             20               112015
12             20               112015

tblAccounts

account_no  zone
1            A
2            A
3            B
4            B
5            C
6            C
11           A
12           A

任何帮助将不胜感激:)

1 个答案:

答案 0 :(得分:1)

这可能是您要查找的查询:

SELECT Temp.read_month, A.zone, SUM(Temp.water_used) 'water_used' FROM
(
    SELECT T.account_no, T.read_month, T.water_used from tblTransaction T
    UNION
    SELECT B.account_no, B.read_month, B.water_used from tblBilling B
) Temp
INNER JOIN tblAccounts A on A.account_no = Temp.account_no
GROUP BY Temp.read_month, a.zone