我正在创建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
因此,在上述情况下,帐户编号1234和12345属于一个客户,并且两个帐户都绑定到相同的订阅。因此,我尝试编写一个针对AccountNum#1234的查询作为输入,并在一个查询中从同一客户下的同一客户的不同帐户中获取订阅ID,订阅名称,为同一订阅支付的总金额。
答案 0 :(得分:0)
您无法执行聚合函数并在与之相反的查询中检索“分组依据”中未使用的字段 您可以使用下面的查询查找每位客户花费的总金额
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;
如果您还需要订阅详细信息,则将需要显示多行,每行总金额,这没有意义