两个计数语句之间的差异

mab*_*ger 3 sql oracle

我在 SQL 中有两个计数语句,我想知道它们之间的差异。我正在尝试这样的事情。

SELECT  'Customers After', SUM(Counts) Counts
FROM
(SELECT 'Customers Before', COUNT(*) AS Counts FROM CUSTOM3
MINUS
SELECT  'Customers to be', COUNT(*) AS Counts FROM
CUSTOM3 a
WHERE 
    a.CUSTOMER_FLAG IS NULL
AND NOT EXISTS (SELECT 1 FROM ACC2 acc WHERE acc.CUSTOMER_ID = a.CUSTOMER_ID)
AND CUST_BQ IS NULL);
Run Code Online (Sandbox Code Playgroud)

但它只是返回行数,我应该使用什么而不是 MINUS 或者我应该如何启动它?

我应该得到这样的东西:

Customers After 15
Customers Before 20
Customers to be 5
Run Code Online (Sandbox Code Playgroud)

kro*_*lko 5

使用子查询和 case 表达式:

SELECT Customers_before, Customers_after,
       Customers_before - Customers_after As Customers_to_be
FROM (
    SELECT count(*) As Customers_before,
           count( case when a.CUSTOMER_FLAG IS NULL
                       and not exists( 
                            SELECT 1 FROM ACC2 acc 
                            WHERE acc.CUSTOMER_ID = a.CUSTOMER_ID)
                       and CUST_BQ IS NULL
                   then 1 end ) as Customers_after
    FROM CUSTOM3 a
)
Run Code Online (Sandbox Code Playgroud)