合并两列上的两个SQL查询
我有两个问题。我想合并一个表和两列合并两列上的两个SQL查询,sql,Sql,我有两个问题。我想合并一个表和两列 SELECT COUNT(IsApproved) as CountNotApproved FROM Erp_OrderReceipt WHERE IsApproved = 0 及 您可以使用Union和group SELECT SUM(CountApproved) CountApproved, SUM(CountNotApproved) CountNotApproved FROM ( SELECT 0 a
SELECT COUNT(IsApproved) as CountNotApproved
FROM Erp_OrderReceipt
WHERE IsApproved = 0
及
您可以使用Union和group
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
您可以使用Union和group
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
您可以为此使用条件聚合:
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
值。对于不符合条件的所有行,大小写的结果为NULL
如果您的DBMS支持这一点,您还可以使用ANSI SQLfilter
子句:
SELECT COUNT(*) FILTER (where IsApproved = 0) as CountNotApproved,
COUNT(*) FILTER (where IsApproved = 1) as CountApproved
FROM Erp_OrderReceipt
您可以为此使用条件聚合:
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
值。对于不符合条件的所有行,大小写的结果为NULL
如果您的DBMS支持这一点,您还可以使用ANSI SQLfilter
子句:
SELECT COUNT(*) FILTER (where IsApproved = 0) as CountNotApproved,
COUNT(*) FILTER (where IsApproved = 1) as CountApproved
FROM Erp_OrderReceipt