sql >> Database >  >> RDS >> Sqlserver

Gegevens extraheren uit MS SQL Server-2008 die verwijzen naar meerdere tabellen

Voortbordurend op de vorige query, denk ik dat de nieuwe kolommen kunnen worden toegevoegd met een voorwaardelijke aggregatie in de select-instructie en een andere left join voor de mislukte tabel.

Dit zou moeten werken, maar ik weet zeker dat de zoekopdracht kan worden verbeterd:

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

Voorbeeld SQL-fiddle met testgegevens




  1. Hoe vind je het derde of nᵗʰ maximum salaris uit de salaristabel?

  2. Hoe een databasewaarde in een hyperlink door te geven met behulp van PHP + HTML

  3. Een update met meerdere voorwaarden. SQL 2008

  4. Hoe geef ik tekst in een leeg veld in een SQL-query weer?