【发布时间】:2018-01-08 16:28:56
【问题描述】:
我有三个表,它们有一个公共列 Ch_id。 我想用别名(Allocation、Received、Withdrawl、Balance)对所有三个表中的列(总计)求和。
如何加入所有三个表并获得如下结果。
CH_id Allocation Received Withdrawl Balance(Received-Withdrawl)
--------------------------------------------------------------------------
1 100000 50000 25000 25000
2 300000 20000 200000 0
3 200000 100000 0 100000
...... and so on
我想要 CH_Allocation 表中的所有行
我尝试了以下方法,但结果并不理想。
SELECT
CH_Allocation.CH_id,
SUM(CH_Allocation.Total) AS Allocated,
SUM(ch_funds.Total) AS received,
(req_ch.total) AS Withdrawl
FROM CH_Allocation
LEFT JOIN Req_CH
ON Req_CH.CH_id = CH_Allocation.CH_id
LEFT JOIN CH_Funds
ON CH_Funds.CH_id = CH_Allocation.CH_id
WHERE
CH_Allocation.Project_Id = 2 AND
Req_CH.Project_id = 2
GROUP BY
CH_Allocation.CH_id,
Req_CH.ch_id,
CH_Funds.CH_id
还有这个
select a.ch_id,SUM(a.total) as alloted,SUM(b.total) as received,SUM(c.total) as withdrawl,SUM(b.Total)-sum(c.Total) as balance from
CH_Allocation a,CH_Funds b,Req_CH c
where a.CH_id=b.CH_id
and c.CH_id=b.CH_id
and b.CH_id=a.CH_id
and c.Project_id=2
and a.Project_Id=2
and b.Project_Id=2
group by a.CH_id
请高手帮忙。
【问题讨论】:
-
请同时包含其他表格的结构。
-
所有表都有这些公共列。 (id,Project_id,Ch_id,Total)
-
你应该只按 Id 分组...并阅读什么分组 ^^w3resource.com/sql/aggregate-functions/sum-with-group-by.php
-
这是一个错字,我已经更正了。
标签: sql sql-server left-join inner-join