sql >> Databasteknik >  >> RDS >> Sqlserver

Extrahera data från MS SQL Server-2008 som refererar till flera tabeller

Om jag fortsätter med den föregående frågan tror jag att de nya kolumnerna skulle kunna läggas till med en villkorlig aggregering i select-satsen och ytterligare en vänsterjoin för den misslyckade tabellen.

Detta borde fungera, men jag är säker på att frågan kan förbättras:

select 
    d.LOTQty, 
    ApprovedQty = count(d.SerialNo),
    d.DispatchDate,
    Installed = count(a.SerialNo) + count(r.NewSerialNo),
    DOA    = sum(case when datediff(day, coalesce(a.ActivationDate,r.RecordDate), f.FailedDate) <= 10 then 1 else 0 end),
    Bounce = sum(case when datediff(day, coalesce(a.ActivationDate,r.RecordDate), f.FailedDate) between 11 and 180 then 1 else 0 end)
from 
    Despatch d 
left join 
    Activation a 
     on d.SerialNo= a.SerialNo
    and d.DispatchDate <= a.ActivationDate 
    and d.LOTQty = a.LOTQty
left join 
    Replaced r 
      on d.SerialNo= r.NewSerialNo
     and d.DispatchDate <= r.RecordDate
     and (a.ActivationDate is null or a.ActivationDate < d.DispatchDate)
left join 
    Failed f 
      on (f.FailedSINo = a.SerialNo)
      or (f.FailedSINo = r.NewSerialNo)     
where 
    d.LOTQty = 15
group by 
    d.LOTQty, d.DispatchDate

Exempel på SQL-fiol med testdata




  1. Skriptet för MySQL-replikeringshälsokontroll

  2. PHP - problem med att associera resultat och hämta dem inom MYSQL

  3. mysql DEKLARERA VIDAN utanför lagrad procedur hur?

  4. Felaktig användning av UNION och ORDER BY?