2016-07-26 155 views
0

我有两个查询。我想合并一个表格和两列。合并两列SQL查询

SELECT COUNT(IsApproved) as CountNotApproved 
FROM Erp_OrderReceipt 
WHERE IsApproved = 0 

SELECT COUNT(IsApproved) as CountApproved 
FROM Erp_OrderReceipt 
WHERE IsApproved = 1 

回答

3

可以使用条件汇聚了这一点:

SELECT COUNT(case when IsApproved = 0 then 0 end) as CountNotApproved, 
     COUNT(case when IsApproved = 1 then 1 end) as CountApproved 
FROM Erp_OrderReceipt; 

这工作,因为聚合函数忽略NULL值。对于与条件不匹配的所有行,CASE的结果为NULL

如果你的DBMS支持这一点,你也可以使用ANSI SQL filter条款:

SELECT COUNT(*) FILTER (where IsApproved = 0) as CountNotApproved, 
     COUNT(*) FILTER (where IsApproved = 1) as CountApproved 
FROM Erp_OrderReceipt 
0

您可以使用联盟和组对该

SELECT SUM(CountApproved) CountApproved, 
     SUM(CountNotApproved) CountNotApproved 
FROM 
(
    SELECT 
     0 as CountApproved, 
     COUNT(IsApproved) as CountNotApproved 
    FROM Erp_OrderReceipt where IsApproved=0 
    UNION 
    SELECT 
     COUNT(IsApproved) as CountApproved, 
     0 as CountNotApproved 
    FROM Erp_OrderReceipt where IsApproved=1 
) u 
+0

语法错误... – jarlh

+0

修正去除语法错误 – Juan