SQL SUM受限制

时间:2014-12-16 07:26:48

标签: sql select group-by sum aggregate-functions

我有一个视图从多个表中汇总数据。我们认为它是这样的:

 TransPK   Amount    Currency_ID
 -------------------------------
 1         2000      0
 1         -2000     0
 2         3600      1
 2         -7200     2
 . . .

我想计算每个不同TransPK的sum(Amount),但仅限于给定TransPK的所有Currency_ID相同的情况。即在上面的数据中只返回一个结果,因为对于TransPK = 2,Currency_ID有两个值。

我不知道该搜索什么!我尝试过“SQL SUM限制”,但点击次数没用。我不是第一个想做这样事情的人。有人能够指出我正确的方向吗?

3 个答案:

答案 0 :(得分:1)

试试这个:

SELECT TransPK, SUM(Amount)
FROM tableA 
GROUP BY TransPK
HAVING COUNT(DISTINCT Currency_ID) = 1;

检查SQL FIDDLE DEMO

<强>输出

| TRANSPK | AMOUNT |
|---------|--------|
|       1 |      0 |
|       3 |   3000 |

答案 1 :(得分:0)

我想这就是你所追求的:

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 :(得分:0)

你需要这样的东西

SELECT TransPK, Currency_ID, SUM(Amount)
FROM Your_Table
GROUP BY TransPK, Currency_ID

有关分组多列的详细信息,请查看Using group by on multiple columns