Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Pobieranie danych z MS SQL Server-2008 odwołujących się do wielu tabel

Kontynuując poprzednie zapytanie, myślę, że nowe kolumny można by dodać za pomocą agregacji warunkowej w instrukcji SELECT i kolejnego lewego sprzężenia dla tabeli, która zakończyła się niepowodzeniem.

To powinno działać, ale jestem pewien, że zapytanie można poprawić:

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

Przykładowe skrzypce SQL z danymi testowymi




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wystąpiła nieprawidłowa operacja zmiennoprzecinkowa

  2. 5 składni SQL i zasad zapytań dla lepszego monitorowania baz danych

  3. Jak uzyskać część numeryczną z ciągu znaków za pomocą T-SQL?

  4. Jak zaimplementować rejestrowanie i raportowanie błędów w procedurach składowanych SQL?

  5. sql server 2008 - znajdź tabele zawierające określony tekst