![](/img/trans.png)
[英]Selecting data from table where sum of values in a column equal to the value in another column
[英]How to sum a column where another column is equal to other table
我有2個表格, Assets
和Main
。 我想創建一個查詢,該查詢將對Main
的交易進行總計,並按Assets
的每個帳戶進行分組。 但是有一個陷阱:有時需要將amt
總結為肯定的,有時需要總結為否定的。
在Assets
,我有Account
和Descript
列。 Account
包含“ 1001”和其他文字。 Descript
只是文本。
Account Descript
--------------------------
1001 Cash
1101 Receivable
在Main
,我有Amt
, Ac1
和Ac2
。
Amt
持有我們需要求和的金額 Ac1
和Ac2
以文本形式保存Assets
帳號 在Main
,當在Ac1
標記一個帳戶時,該交易對該帳戶是肯定的。 在Ac2
標記一個帳戶后,該帳戶的交易金額為負數。
說一句,在Main中:
數據:
Amt Ac1 Ac2
-------------------
-1000 1001 1101
2000 1001 1101
因此,預期結果需要為:
Account Descrip TtlAmt
-------------------------------
1001 Cash 1000.00
1101 Receivable -1000.00
我有一些代碼,但不確定是否有幫助。
SELECT
Asset.Account, Asset.Descrip AS Expr1,
SUM(Main.Amt) AS SumOfAMT, SUM(Main.Amt) AS Expr2
FROM
Asset
LEFT JOIN
Main ON (Asset.ACCOUNT = Main.AC2) OR (Asset.ACCOUNT = Main.AC1)
GROUP BY
Asset.Account, Asset.Descrip;
只是為了非常清楚,我也有稱為“責任”,“費用”等的表。但是我覺得我們可以只關注一個查詢,因為其他查詢應該在適當的指導下就位。
我知道這與手頭的問題無關,但是在Excel中,我使用以下公式來完成此任務。
SUM(SUMIF([sum range], [criteria range], [criteria]), SUMIF([sum range], [criteria range], [criteria])*-1)
我認為解釋我的最終目標可能會有所幫助。
假設Main中有一個唯一的標識符字段。
考慮:
查詢1
SELECT ID, "Ac1" AS Src, Ac1 AS Act, Amt FROM Main
UNION SELECT ID, "Ac2", Ac2, Amt*-1 FROM Main;
QUERY2
SELECT Query1.Act, Assets.Descrip, Sum(Query1.Amt) AS SumOfAmt
FROM Assets INNER JOIN Query1 ON Assets.Account = Query1.Act
GROUP BY Query1.Act, Assets.Descrip;
一體
SELECT Query1.Act, Assets.Descrip, Sum(Query1.Amt) AS SumOfAmt
FROM Assets INNER JOIN
(SELECT Ac1 AS Act, Amt FROM Main
UNION SELECT Ac2, Amt*-1 FROM Main) AS Query1
ON Assets.Account = Query1.Act
GROUP BY Query1.Act, Assets.Descrip;
從性能的角度來看,關聯子查詢可能是一種更好的方法:
select a.*,
( (select nz(sum(m.amt), 0)
from main as m
where m.ac1 = a.account
) -
(select nz(sum(m.amt), 0)
from main as m
where m.ac2 = a.account
)
) as net_amount
from assets as a;
特別是,這可以利用兩個索引: main(ac1, amt)
和main(ac2.amt)
。
此外,它消除了整個結果集的聚合。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.