sql >> Databáze >  >> RDS >> Sqlserver

Extrahování dat z MS SQL Server-2008 s odkazem na více tabulek

V návaznosti na předchozí dotaz si myslím, že nové sloupce by mohly být přidány s podmíněnou agregací v příkazu select a dalším levým spojením pro neúspěšnou tabulku.

To by mělo fungovat, ale jsem si jistý, že dotaz lze zlepšit:

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

Ukázka SQL Fiddle s testovacími daty




  1. JAK odstranit duplicitní data z výsledku pole PDO

  2. Laravel Neznámý sloupec 'updated_at'

  3. jak poslat SMS přes oracle 11g? klientem je ropucha a v Indii musím posílat sms

  4. Vyhněte se vkládání SQL pomocí mysql_real_escape_string a stripslashes