2014-10-27 118 views
0

我需要做一個選擇不同的where子句(使用不​​同的產品代碼)。我需要的結果如下。SQL選擇不同的where子句

我有表所示:

ApID | Date  | Code | Qty | Price | Sum 
222 | 2014-10-11 | 555 | 1 | 2,22 | 2,22 
222 | 2014-10-11 | 555 | 1 | 2,22 | 2,22 
222 | 2014-10-11 | 333 | 1 | 3,33 | 3,33 
222 | 2014-10-12 | 555 | 1 | 2,22 | 2,22 

我的查詢:

SELECT 
CAST(Date AS DATE) as 'Data', 
SUM(Qty*Price) AS 'Sum', 
SUM(Qty) AS 'Qty' 
    FROM Table 
    WHERE ApID = 222 
    AND Data BETWEEN '2014-10-11' AND '2014-10-13' 
    AND Code LIKE '555' 
GROUP BY CAST(KvitoGalva.Data AS DATE) 

我得到結果是這樣的:

Data  | Sum | Qty 
2014-10-11 | 4.44 | 2 
2014-10-12 | 2.22 | 1 

我需要在一個表中顯示的結果:

Data  | Sum 555 | Qty 555 | Sum 333 | Qty 333 | 
2014-10-11 | 4.44  | 2  | 3.33 | 1  | 
2014-10-12 | 2.22  | 1  | 0  | 0  | 

嘗試:

SELECT((Select1),(Select2)) 
---------------------------- 
SELECT 1 
union 
select 2 

回答

0

爲此,您可以使用條件彙總:

SELECT CAST(Date AS DATE) as Data, 
     SUM(case when code = '555' then Qty*Price else 0 end) AS Sum555, 
     SUM(case when code = '555' then Qty else 0 end) AS Qty555, 
     SUM(case when code = '333' then Qty*Price else 0 end) AS Sum333, 
     SUM(case when code = '333' then Qty else 0 end) AS Qty333 
FROM Table t 
WHERE ApID = 222 AND 
     Data BETWEEN '2014-10-11' AND '2014-10-13' AND 
     Code IN ('555', '333') 
GROUP BY CAST(KvitoGalva.Data AS DATE); 

注:只使用單引號字符串和日期常量。你不需要引用列別名,如果你這樣做了,那麼你的數據庫將有一個更好的字符逃脫名稱。