2013-05-05 13 views
5

2 seçimlerinden iki farklı sütunlar Substracting ben aşağıda bu iki sorgu var:aynı masada

SELECT globalid, name, price, sum(qnt) as pozitive 
from main 
where [date-out] is null 
group by globalid, name, price; 

bu sorgu iki tarih türleri, oluşturulma tarihi ve farklı kalemlerin miktarının toplamını verir tarih-in.

SELECT globalid, sum(qnt) as negative 
from main 
where [date-out] is not null 
group by globalid; 

bu sorgu tarih aşımı -s farklı öğelerin depodan çıkartıp miktarının toplamını verir.

ben aşağıdaki alanları olan bir DataSet yapmak istiyorum:

globalid - toplam

Ben - satılan - stokta - adı - fiyatı bazı örnekleri çevrimiçi olarak bulmuşlardır, ancak esas olarak sayım işleviyle veya toplamı ile, sorgulardan yalnızca birinin bir koşulu vardır, her ikisi de değil. SQL Server kullanıyorum, herhangi bir yardım takdir edilir. Eğer CASESUM ile kullanabileceğiniz gibi

cevap

2

görünüyor - Herhangi bir alt sorgular gerek:

SELECT 
    globalid, 
    name, 
    price, 
    sum(case when [date-out] is null then qnt end) positive, 
    sum(case when [date-out] is not null then qnt end) negative, 
    sum(qnt) total 
from main 
group by 
    globalid, 
    name, 
    price 
1
select x.globalid, x.name, x.price, x.positive as [in stock], x.negative as [sold], x.positive + x.negative as [total] 
from 
(
SELECT globalid, 
      name, 
      price, 
    sum(case when [date-out] is not null then qnt else 0 end) as negative, 
    sum(case when [date-out] is null then qnt else 0 end) as positive 
from main 
where [date-out] is not null 
group by globalid, name, price 
) as x 
İlgili konular