2016-06-03 6 views
0
SELECT 
    [PlayerId], 
    SUM(Aggr.TotalBetAmount)     [TotalBets], 
    SUM(Aggr.TotalBetCount)      [TotalBetCount], 
    SUM(Aggr.RealMoneyBetAmount)    [RealMoneyBets], 
    SUM(Aggr.BonusMoneyBetAmount)    [BonusBets], 
    SUM(Aggr.RedeemedBonusBetAmount)   [RedeemedBonusBets], 
    SUM(Aggr.FinancialBetAmount)    [FinanceBets], 
    SUM(Aggr.TotalWinAmount)     [TotalWins], 
    SUM(Aggr.RealMoneyWinAmount)    [RealMoneyWins], 
    SUM(Aggr.BonusMoneyWinAmount)    [BonusWins], 
    SUM(Aggr.RedeemedBonusWinAmount)   [RedeemedBonusWins], 
    SUM(Aggr.FinancialWinAmount)    [FinanceWins], 
    SUM(Aggr.TotalGrossWinAmount)    [TotalIncome], 
    SUM(Aggr.RealMoneyGrossWinAmount)   [RealMoneyIncome], 
    SUM(Aggr.BonusMoneyGrossWinAmount)   [BonusMoneyIncome], 
    SUM(Aggr.RedeemedBonusMoneyGrossWinAmount) [RedeemedBonusIncome], 
    SUM(Aggr.FinancialGrossWinAmount)   [FinancialTotalIncome], 
    SUM(Aggr.NetIncomeAmount)     [NetIncome], 
    SUM(Aggr.RedeemedNetBonusIncomeAmount)  [RedeemedNetBonusIncomeAmount], 
    SUM(Aggr.BonusMarketingCostAmount)   [RedeemedBonusCash], 
    SUM(Aggr.BonusBalanceCorrectionAmount)  [BonusBalanceCorrection], 
    SUM(Aggr.[RedeemedNetBonusIncomeAmount]) [CasinoRedeemedNetBonusIncomeAmount]  
FROM 
    [WarehouseMgmt].[FactWalletAgr] Aggr 
JOIN 
    [WarehouseMgmt].[DimGame] DG ON Aggr.GameId = DG.Id 
JOIN 
    [WarehouseMgmt].[DimPlayer] DPL ON Aggr.[PlayerId] = DPL.[Id] 
JOIN 
    [WarehouseMgmt].[DimProductTypeMapGroup] PTMG ON PTMG.ProductTypeId = Aggr.ProductTypeId 
WHERE 
    (TimeId BETWEEN @DimStartDateUTC AND @DimEndDateUTC) 
    AND PTMG.MapGroupId = @CasinoProductType ' [email protected]+ ' 
GROUP BY 
    [PlayerId] 

und meine Frage: wie kann ich berechnen TotalBetAmount, TotalBetCount, RealMoneyBetAmount, ... für verschiedene Produkttypen aus derselben Tabelle [WarehouseMgmt].[FactWalletAgr] aber ohne zu beschränken, in denen für nur ein Produkttyp PTMG.MapGroupId = @CasinoProductType?berechnen gleiche Werte aber für unterschiedlichen Produkttyp in SQL Server

Ich mag irgendwie eine Abfrage haben, die auch für SportsBook, Poker und Casino Produkttyp berechnen, aber nicht 3 verschiedene Copy-Paste-Abfragen haben. Nur eine Abfrage und irgendwie in der Lage sein, aber richtige Werte für den richtigen Produkttyp

+1

bitte verbessern Sie Ihre Frage https://spaghettidba.com/2015/04/24/how-to-post-a-t-sql-question-on-a-public-forum/ – TheGameiswar

Antwort

1

Sie können versuchen, group by [MapGroupId].

SELECT 
        [PlayerId], 
        [MapGroupId], 
        SUM(Aggr.TotalBetAmount)        [TotalBets], 
        SUM(Aggr.TotalBetCount)        [TotalBetCount], 
        SUM(Aggr.RealMoneyBetAmount)       [RealMoneyBets], 
        SUM(Aggr.BonusMoneyBetAmount)       [BonusBets], 
        SUM(Aggr.RedeemedBonusBetAmount)      [RedeemedBonusBets], 
        SUM(Aggr.FinancialBetAmount)       [FinanceBets], 
        SUM(Aggr.TotalWinAmount)        [TotalWins], 
        SUM(Aggr.RealMoneyWinAmount)       [RealMoneyWins], 
        SUM(Aggr.BonusMoneyWinAmount)       [BonusWins], 
        SUM(Aggr.RedeemedBonusWinAmount)      [RedeemedBonusWins], 
        SUM(Aggr.FinancialWinAmount)       [FinanceWins], 
        SUM(Aggr.TotalGrossWinAmount)       [TotalIncome], 
        SUM(Aggr.RealMoneyGrossWinAmount)      [RealMoneyIncome], 
        SUM(Aggr.BonusMoneyGrossWinAmount)      [BonusMoneyIncome], 
        SUM(Aggr.RedeemedBonusMoneyGrossWinAmount)    [RedeemedBonusIncome], 
        SUM(Aggr.FinancialGrossWinAmount)      [FinancialTotalIncome], 
        SUM(Aggr.NetIncomeAmount)        [NetIncome], 
        SUM(Aggr.RedeemedNetBonusIncomeAmount)     [RedeemedNetBonusIncomeAmount], 
        SUM(Aggr.BonusMarketingCostAmount)      [RedeemedBonusCash], 
        SUM(Aggr.BonusBalanceCorrectionAmount)     [BonusBalanceCorrection], 
        SUM(Aggr.[RedeemedNetBonusIncomeAmount])    [CasinoRedeemedNetBonusIncomeAmount]  
       FROM [WarehouseMgmt].[FactWalletAgr] Aggr 
       JOIN [WarehouseMgmt].[DimGame] DG ON Aggr.GameId = DG.Id 
       JOIN [WarehouseMgmt].[DimPlayer] DPL ON Aggr.[PlayerId] = DPL.[Id] 
       JOIN [WarehouseMgmt].[DimProductTypeMapGroup] PTMG ON PTMG.ProductTypeId = Aggr.ProductTypeId 
       WHERE (TimeId BETWEEN @DimStartDateUTC AND @DimEndDateUTC) 
       AND PTMG.MapGroupId IN (@CasinoProductType, @SportsBook, ...) ' [email protected]+ ' 
       GROUP BY [PlayerId], [MapGroupId] 
+0

Das ist eine gute Idee. Tnx – user2171512

Verwandte Themen