sql >> Databasteknik >  >> RDS >> Sqlserver

SQL Total Summa med subtraktion om ny inmatning görs i tabellen

Baserat på SQL Fiddle gjorde jag ett nytt försök, som jag tror är korrekt, även om det returnerar 81 och inte 100 för John:

;  with LP (CustomerId, Name, UserActions, TotalPoints) as (
SELECT
   C.CustomerId,
   C.Name,
   sum(case when P.LoyaltyPointsId = 4 then isnull(R.RedeemCount, 0) else 1 end),
   sum(P.Points * case when P.LoyaltyPointsId = 4 then isnull(R.RedeemAmount,0) else 1 end)
from
   CustomerTable C
   join LoyaltyDetailsTable D on D.CustomerId = C.CustomerId
   join LoyaltyPointTable P on P.LoyaltyPointsId = D.LoyaltyPointsId
   outer apply (
       select sum(Amount) as RedeemAmount, count(Amount) as RedeemCount 
       from RedeemPointsTable R
       where R.CustomerId = C.CustomerId
   ) R
   group by C.CustomerId, C.Name
),

PP (CustomerId, Pricepoints) as (
    select C.CustomerId, sum(P.Pricepoints)
    from PriceTable P
    join PriceClaimTable C on P.PriceClaimId = C.PriceClaimId
    group by C.CustomerId
)

select 
    LP.CustomerId, LP.Name, LP.UserActions, LP.TotalPoints - isnull(PP.Pricepoints, 0) as Points
from
    LP
    left outer join PP on LP.CustomerId = PP.CustomerId 
order by LP.CustomerId

Antagandet är att kunden alltid hittas från lojalitetstabellerna, men inte nödvändigt från inlösen eller pristabeller

SQL Fiddle för denna version:http://sqlfiddle.com/#!3/5e379/8




  1. Hur skapar man ett bord med två eller flera främmande nycklar med Android Room?

  2. Vad gör CONSTRAINT i MySQL med FKs?

  3. Varför ger denna SQL-kod fel 1066 (Inte unik tabell/alias:'användare')?

  4. Det går inte att ta bort eller uppdatera en överordnad rad ConstraintViolationException