sql >> Database >  >> RDS >> Sqlserver

Voorwaardelijk aggregaat gebruiken in SQL Server 2008

Voeg gewoon de tweede query toe aan de kolomlijst van de eerste query, omdat deze slechts één rij retourneert. Probeer dit.

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'

Bijwerken:

Als u het aantal resultaten van elk model wilt, converteert u de subquery het naar correlated subquery . zou zoiets moeten zijn als

  (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')

Hier voor elk model in Instock tabel de respectievelijke count in de outstock wordt berekend.

Of je kunt ook Left Join . gebruiken . Bereken eerst het aantal van elk model in Outstock tabel join het resultaat terug naar de Instock tafel met het model

   ....
   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. T-SQL Pivot/Unpivot (transponeren) kolomkoppen nodig als gegevensrijen

  2. Hoe kan ik een kolom aan een werktabel toevoegen met behulp van een nieuwe opgeslagen procedure?

  3. SQL-query converteren naar Codeigniter Active Record

  4. Geïndexeerde weergaven en statistieken