Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Извличане на данни от MS SQL Server-2008, препращащи към множество таблици

Продължавайки към предишната заявка, мисля, че новите колони могат да бъдат добавени с условно агрегиране в оператора за избор и друго ляво съединение за неуспешната таблица.

Това трябва да работи, но съм сигурен, че заявката може да се подобри:

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

Примерен SQL Fiddle с тестови данни




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Вземете списък на поддържаните часови зони в SQL Server (T-SQL)

  2. Използване на IF EXISTS с CTE

  3. Обединете две таблици в SQL Server 2008

  4. T-SQL:Експортиране в нов Excel файл

  5. varbinary към низ на SQL Server