【发布时间】:2017-07-16 04:38:50
【问题描述】:
我有 3 张桌子
Tbcodetable
codevalue | codename | desc1 | desc2
1 | SATO | NAG | Naga
2 | SATO | BAG | Baguio
3 | SATO | NCR | Head Office
成员
employeeno | capcon_accountno | savings_accountno | sato
1 | 00101 | 00201 | NCR
2 | 00102 | 00202 | BAG
Tbdeposit
employeeno | account_no | accountbalance
1 | 00101 | 1000
1 | 00201 | 5000
2 | 00102 | 1000
2 | 00202 | 5000
我要查询的是一个查询中每个 sato 的资本和储蓄的总和
codename | codevalue | desc1 | desc2 | capcon | savings
SATO |3 |Head Office |NCR |1000 | 5000
SATO |2 |Baguio |BAG |1000 | 5000
SATO |1 |Naga |NAG |0 | 0
我能做的最好的查询是
SELECT codename,codevalue,desc1,desc2,sum(b.accountbalance) as capcon
FROM TBCODETABLE c
left join TBMEMBER a on c.desc2 = a.SatoCode
join tbdeposit b on a.employeeno = b.employeeno
where a.SLAStatus = 'A' and c.codename ='sato'
group by codename, codevalue, desc1, desc2
这给了我这个结果
codename | codevalue | desc1 | desc2 | capcon
SATO |1 |Head Office |NCR |1000
SATO |2 |Baguio |BAG |1000
这只给了我资本的总和(我不知道如何包括储蓄和结果资本。)它不包括纳加地区
我可以通过 employeeno 加入 tbmember 和 tbdeposit,但是我不知道如何在结果集中分离资本和储蓄的总和
编辑
我编辑了查询,现在由于 syed 我能够查询两者,但我仍然无法获得 NAG sato 代码。
查询:
SELECT codename,codevalue,desc1,desc2, coalesce(sum(b.accountbalance),0) as savings, coalesce(sum(bb.accountbalance),0) as capcon FROM TBCODETABLE c left join TBMEMBER a on c.desc2 = a.SatoCode join tbdeposit b on a.SAVINGS_AccountNo = b.AccountNo
inner join tbdeposit bb on a.CAPCON_Accountno = bb.AccountNo where a.SLAStatus = 'A'
group by codename, codevalue, desc1, desc2
我能够得到预期的结果谢谢你们克里斯的左加入建议解决了我的 NAG SATO 问题,尽管 Syed 的回复对我帮助很大。
我不知道如何投票,所以我只会投票给克里斯(第一次来这里。)
我的最终查询是:
SELECT codename,codevalue,desc1,desc2, coalesce(sum(b.accountbalance),0) as savings, coalesce(sum(bb.accountbalance),0) as capcon FROM TBCODETABLE c left join TBMEMBER a on c.desc2 = a.SatoCode left join tbdeposit b on a.SAVINGS_AccountNo = b.AccountNo
left join tbdeposit bb on a.CAPCON_Accountno = bb.AccountNo where a.SLAStatus = 'A' or codename = 'sato'
group by codename, codevalue, desc1, desc2
【问题讨论】:
-
在
Tbcodetable你有codevalue1 是 Naga 和codevalue3 是总部 但在结果表中反之亦然. -
还有,顺便说一句,你为什么需要在这里分组?恕我直言,您只需加入
Tbdeposit两次。 link -
是的,我刚刚意识到我只需要再加入 1 个链接,正如链接 @SyedMZulqarnain 所说。虽然它仍然没有在结果中得到 NAG sato
-
@PetSerAl 抱歉,只是代码值中的一个错字
标签: sql