sql >> Databasteknik >  >> RDS >> Sqlserver

Använda Conditional Aggregate i SQL Server 2008

Lägg bara till den andra frågan i kolumnlistan för den första frågan eftersom den bara kommer att returnera en rad. Prova detta.

SELECT Sum(CASE
             WHEN MONTH = '2013-8-1' THEN CurrentStock
             ELSE 0
           END)                                 AS CurrentStock,
       Isnull(Sum(CASE WHEN MONTH = '2014-2-1' THEN CPU ELSE 0 END), 0) - 
       Isnull(Sum(CASE WHEN MONTH = '2013-8-1' THEN CPU ELSE 0 END), 0) AS CPU,
       Sum(CASE WHEN Month = '2013-8-1' THEN NonCPUWIP ELSE 0 END) AS NonCPU,
       Isnull(Sum(CASE WHEN MONTH = '2014-2-1' THEN ScrapDiscarded ELSE 0 END), 0) - 
       Isnull(Sum(CASE WHEN MONTH = '2013-8-1' THEN ScrapDiscarded ELSE 0 END), 0)AS Scrap,
       Sum(CASE WHEN Month = '2013-8-1' THEN WaitingForApproval ELSE 0 END) AS WFA,
       (SELECT Count(STBSerialNUMBER)
        FROM   OutStock
        WHERE  DispatchDate BETWEEN '2013-8-1' AND '2014-2-1'
                AND Vendor = 'abc' ) as Despatched
FROM   Instock I
WHERE  Vendor = 'abc'

Uppdatering:

Om du vill ha resultaträkningen för varje modell konverterar du subquery det till correlated subquery . borde vara något liknande

  (SELECT Count(STBSerialNUMBER)
   FROM   OutStock O
   WHERE o.model = i.model  -- here is the change
   AND O.DispatchDate BETWEEN '2013-8-1' AND '2014-2-1'
   AND o.Vendor = 'abc')

Här för varje model i Instock tabell respektive count i outstock kommer att beräknas.

Eller så kan du också använda Left Join . Beräkna först antalet för varje model i Outstock tabell join resultatet tillbaka till Instock tabell med modellen

   ....
   From Instock I Left Join 
   (SELECT Count(STBSerialNUMBER) OutStock_count,Model
   FROM   OutStock O
   WHERE  O.DispatchDate BETWEEN '2013-8-1' AND '2014-2-1'
   AND o.Vendor = 'abc'
   Group by Model) O on o.model = i.model



  1. Varför bygger inte --force-recreate om min docker mysql-bild?

  2. Hur gör man en snabbare fråga med störst-n-per-grupp?

  3. Optimeringströsklar – gruppering och aggregering av data, del 2

  4. Hur överför man sql-krypterad data mellan SQL Server 2005-databaser?