SQL SUM 受限
Posted
技术标签:
【中文标题】SQL SUM 受限【英文标题】:SQL SUM restricted 【发布时间】:2015-02-14 11:11:06 【问题描述】:我有一个从多个表中收集数据的视图。让我们认为它是这样的:
TransPK Amount Currency_ID
-------------------------------
1 2000 0
1 -2000 0
2 3600 1
2 -7200 2
. . .
我想计算每个不同 TransPK 的总和(金额),但仅在给定 TransPK 的所有 Currency_ID 相同的情况下。即在上面的数据中只会返回一个结果,因为对于 TransPK=2,Currency_ID 有两个值。
我不知道该搜索什么!我试过“”,但命中没有用。我不是第一个想做这种事情的人。有人能指出我正确的方向吗?
【问题讨论】:
【参考方案1】:你需要这样的东西
SELECT TransPK, Currency_ID, SUM(Amount)
FROM Your_Table
GROUP BY TransPK, Currency_ID
有关多列分组的更多信息,请查看Using group by on multiple columns
【讨论】:
【参考方案2】:试试这个:
SELECT TransPK, SUM(Amount)
FROM tableA
GROUP BY TransPK
HAVING COUNT(DISTINCT Currency_ID) = 1;
查看SQL FIDDLE DEMO
输出
| TRANSPK | AMOUNT |
|---------|--------|
| 1 | 0 |
| 3 | 3000 |
【讨论】:
SQL 要求我将 Currency_ID 添加到 GROUP BY 子句中,我仍然得到 TransPK=2 的结果 :-( 该死,这个看起来很有希望!!!【参考方案3】:我想这就是你所追求的:
SELECT TransPK, SUM(Amount) AS Amount, Currency_ID
FROM TableName
GROUP BY TransPK, Currency_ID
HAVING COUNT(Currency_ID) > 1
结果:
TRANSPK AMOUNT CURRENCY_ID
1 0 0
在SQL Fiddle 中查看结果。
【讨论】:
我认为这通常不适用于我的数据。在此视图中,事务可以有任意数量的条目 (>= 2)。这不会仅限于只有 2 个条目的条目吗? @skiaddict1:你试过我更新的答案了吗?(Currency_ID)>1
.以上是关于SQL SUM 受限的主要内容,如果未能解决你的问题,请参考以下文章