我有一个视图从多个表中汇总数据。我们认为它是这样的:
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限制”,但点击次数没用。我不是第一个想做这样事情的人。有人能够指出我正确的方向吗?
答案 0 :(得分:1)
试试这个:
SELECT TransPK, SUM(Amount)
FROM tableA
GROUP BY TransPK
HAVING COUNT(DISTINCT Currency_ID) = 1;
<强>输出强>
| 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