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

Съвпадение на данни от три таблици в Sql Server 2008

Мисля, че можете да използвате леви съединения, за да направите това. Опитайте тази заявка, с вашите примерни данни тя произвежда желания резултат, с изключение на ApprovedQty , но не разбирам как стигна до 12 за това с примерните данни:

select 
    d.LOTQty, 
    ApprovedQty = count(d.ProductNo),
    d.DispatchDate,
    Installed = count(a.ProductNo) + count(r.ProductNo)
from 
    Despatch d 
left join 
    Activation a 
     on d.ProductNo = a.ProductNo 
    and d.DispatchDate < a.ActivationDate 
    and d.LOTQty = a.LOTQty
left join 
    Replaced r 
      on d.ProductNo = r.ProductNo 
     and d.DispatchDate < r.RecordDate
     -- only count Replaced when there is no match in Activation
     -- or DispatchDate is greater then ActivationDate
     and (a.ActivationDate is null or a.ActivationDate < d.DispatchDate)
where 
    d.LOTQty = 20
group by 
    d.LOTQty, d.DispatchDate

това ще изведе:

LOTQty  ApprovedQty DispatchDate    Installed
20      6           2013-08-07      5



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Вмъкнете няколко реда в една колона

  2. DateTime2 срещу DateTime в SQL Server

  3. Групово вмъкване на общ списък C# в SQL Server

  4. Visual Studio 2015 SQL Server Data Tools липсва опция за добавяне на таблица

  5. Как да изберете всеки ред, където стойността на колоната НЕ е различима