我在 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)
使用子查询和 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)