如果我不能清楚地解释自己,我会道歉但我会尽我所能。
所以我需要查询一个表(货币交易),在某个地方,比如分支R1将钱汇到另一个分支(可以是任何分支(R1-R2000))。我需要能够获得交易数量(发送的钱)。问题是分支太多(2000多个分支)。
表格如下:
结果如下所示:
之前我对此进行了相同的查询,但只考虑了不到20个分支。我做了这样的事。
SELECT
SUM(CASE WHEN BranchCode = 'R1' THEN 1 ELSE 0 END) 'R1',
SUM(CASE WHEN BranchCode = 'R2' THEN 1 ELSE 0 END) 'R2',
.....
SUM(CASE WHEN BranchCode = 'R20' THEN 1 ELSE 0 END) 'R20'
FROM MoneyTable
我想知道我能否以更有效的方式做到这一点。
答案 0 :(得分:0)
如果没有更多信息很难说,例如你的表格看起来像什么,但假设每一行都有,BranchCode列中的值表示特定分支发送了钱,你只想数一下分支发送到任何其他分支的事务数量,查询看起来像这样。
select sending_branch, count(*)
from moneytable
group by 1
假设您想要从一个分支到另一个分支的事务计数,那么就像这样。
select sending_branch, receiving_branch, count(*)
from moneytable
group by 1,2
同样如果你想要金额
select sending_branch, receiving_branch, sum(amount)
from moneytable
group by 1,2