2014-10-27 119 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); 

注:只使用单引号字符串和日期常量。你不需要引用列别名,如果你这样做了,那么你的数据库将有一个更好的字符逃脱名称。