我正在使用sql,这是我陷入
的情况Table A
SubscriptionID | Club | Sum_Of_Billings_Of_All_Month | EventID
Table B:
Cost | EventID
Table A left join Table B on EventID
(跟踪每个订阅的成本(
结果
SubscriptionID | Club | Sum_Of_Billings_Of_All_Month | EventID | Cost
我想将Sum_Of_Billings_Of_All_Month
分解为每天的帐单。即,对于每个订阅,我想要每月每天的账单分解。为此,我将group by
Sum_Of_Billings_Of_All_Month
而不是subscriptionID
。
结果
如果我按计费数天进行分组,加入后,我将获得subscriptionIDs
的重复,并且eventIDs
将在行中重复多个时间,然后将其数量多次计算。
我想要什么:
在同一查询中,我希望能够按
SubscriptionID
进行分组,以便我可以按成本保持独特的订阅。,但另一个要求之一是我想知道账单的崩溃,以计算同一查询中的收支平衡和其他指标
这是实际的示例数据
表A
idCustomerSubscription | ClubID | EventId | BillingDate| FinalRevenue
33562784 | 56180001| 5y6m600np1fg | 5/31/2017 | 512
表B
EventId |Cost
5y6m600np1fg |200
表A JOIN B左JOIN在EventID上加入(由subscriptionId
组组idCustomerSubscription |ClubID |EventId |BillingDate| FinalRevenue | Cost
33562784 | 56180001 |5y6m600np1fg| 5/31/2017 | 512 |200
它的目的是因为每个订阅都有一个独特的成本,但另一方面,这种查询不会给我分解帐单日期(我需要它来进行润滑计算(
表A JOIN B左JOIN EVENDID(BILLINGDATE
组组idCustomerSubscription| ClubID |EventId | BillingDate| FinalRevenue |Cost
33562784 | 56180001| 5y6m600np1fg |5/30/2017 |510 |200
33562784 | 56180001| 5y6m600np1fg |5/31/2017 |2 |200
这将使我对盈亏平衡所需的日期分解(第30位为510,第31位为510(,但这将使成本重复(400是成本,而不是200(
我想找出一个SQL魔术,我可以在同一查询中保留每行唯一的子标记数量,并以某种方式跟踪每个订阅的计费日期(而不按日期进行分组,因为它将使行重复复制(。是否可以 ?
也许某种程度上,何时将Events加入并按日期进行分组时,它不会复制成本,并且每个Event的成本仅计数?
我希望您能在以下查询下获得所需的结果。尝试通过MN(别名名称(表进行修改组。
select mn.idCustomerSubscription,mn.ClubID,mn.EventId,mn.BillingDate,mn.FinalRevenue,sq.cost
from tableA Mn left join (select idCustomerSubscription,max(cost) cost, min(billingDate) billingDate from tableA a left join tableB b on a.eventid=b.eventid group by idCustomerSubscription) sq on mn.idCustomerSubscription=sq.idCustomerSubscription and mn.billingDate=sq.billingdate
group by mn.idCustomerSubscription,mn.ClubID,mn.EventId,mn.BillingDate