2017-05-31 39 views
0

我使用SQL,这里是我坚持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 bySum_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加入乙左加入上EVENTID(集团由SubscriptionID

idCustomerSubscription |ClubID  |EventId  |BillingDate| FinalRevenue | Cost 
33562784    | 56180001 |5y6m600np1fg| 5/31/2017 | 512  |200 

它所服务的目的,因为每个订阅具有是唯一一个成本,但它在另一方面,这种查询不会给我帐单日期的细目(我需要它作为盈亏平衡计算)

表A j OIN乙留下的billingdate

idCustomerSubscription| ClubID |EventId   | BillingDate| FinalRevenue |Cost 
33562784    | 56180001| 5y6m600np1fg |5/30/2017   |510   |200  
33562784    | 56180001| 5y6m600np1fg |5/31/2017    |2    |200  

加入的事件ID(集团这会给我,我需要的盈亏平衡点(510对30日和2月31日)的日期破裂,但它会使成本复制(400是我想找出一个SQL魔力,我可以保持每行和一些方法来追踪在同一个查询中每个订阅的账单日期独特的扩产数量的成本,而不是200)


(不按日期分组,因为它会使行重复)。可能吗 ?

也许某种方式,当偶数加入并按日期分组后,它不会重复成本并且每个eventid只计算一次成本?

+1

样本数据和期望的结果将确实有助于传达您想要做的事情。 –

+0

你说过,你想把Sum_Of_Billings_Of_All_Month分解成每天的账单。所以,你想按照每个月的日历日或只是标准30.这将是很容易理解你,如果你已经给了更多的例子 – uSeruSher

+0

更新问题与样品 – PythonDev

回答

0

我希望你能通过下面的查询得到你想要的结果。尝试通过对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 
+0

@pythondev将不会重复发生,一旦检查我的答案并让我知道任何问题 – Rams