[英]Optimized SQL query with multiple joins
我正在创建一个SQL视图。
我在下面:
表A:
AccountNum
Customer_Name
CustomerCode
表B:
SubscriptionId
SubscriptionName
AccountNum
表C:
SubscriptionId
AccountNum
AmountPaid
表D:
SubscriptionId
SubscriptionName
我希望将输入作为AccountNum提供,并获取其帐户的订阅详细信息以及根据不同帐户和订阅详细信息以及一个查询中的帐户详细信息为相同订阅支付的金额。
例:
Table A:
AccountNum Customer_Name CustomerCode
1234 TestName TestCode
12345 Testname1 TestCode1
Table B:
SubscriptionId SubscriptionName AccountNum
12 Netflix 1234
12 Netflix 12345
Table C:
SubscriptionId AccountNum AmountPaid
12 1234 100
12 12345 100
Table D:
SubscriptionId SubscriptionName
12 Netflix
13 Prime
因此,在上述情况下,Account Num 1234和12345属于一个客户,两个帐户都与同一订阅相关联。 因此,我尝试将AccountNum#1234的查询编写为输入,并在一个查询中获取订阅ID,订阅名称,同一订阅中来自同一订阅的相同订阅的金额总和。
您无法执行聚合函数并检索在同一查询中未在“分组依据”中使用的字段,因为它相互矛盾您可以使用以下查询来查找每个客户花费的总金额
select
a.CustomerCode,
sum(case when c.AmountPaid is not null
then c.AmountPaid else 0 end) as TotalAmtPaid
from a
inner join b
on a.AccountNum=b.AccountNum
inner join c
on a.AccountNum=c.AccountNum
where
a.AccountNum = ?
group by
a.CustCode;
如果您还想要订阅详细信息,则需要在每行中显示总行数,这是没有意义的
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.