将验证与不同表中的计数和值相结合

问题描述 投票:0回答:1

我有两个 select 语句,从两个不同的表中查询

select count(1) from ACCOUNTS WHERE CUSTOMER_ID=100206 HAVING COUNT (*) = 0
select ATTEMPTED from DISC_NATURE WHERE CUSTOMER_ID=100206 AND ATTEMPTED='NO';

想要在单个验证中组合两个选择语句。仅当 ACCOUNTS 表为空且 ATTEMPTED=NO

时,验证才会为 TRUE
oracle validation count
1个回答
0
投票

使用

CROSS JOIN

SELECT *
FROM   ( select count(1) AS num_accounts
         from   ACCOUNTS
         WHERE  CUSTOMER_ID=100206
         HAVING COUNT (*) = 0 ) a
       CROSS JOIN
       ( select ATTEMPTED
         from   DISC_NATURE WHERE CUSTOMER_ID=100206
         AND    ATTEMPTED='NO' ) d;

那么,只有在没有帐户且没有尝试的情况下,您才会得到输出。

或者使用

CASE
表达式:

SELECT CASE
       WHEN NOT EXISTS (
              SELECT 1
              FROM   accounts
              WHERE  CUSTOMER_ID=100206
            )
       AND  EXISTS (
              select 1
              from   DISC_NATURE WHERE CUSTOMER_ID=100206
              AND    ATTEMPTED='NO'
            )
       THEN 'No account and no attempt'
       ELSE 'Either account or attempt'
       END AS has_account_attempt
FROM   DUAL;

您将始终获得 1 行结果描述。

© www.soinside.com 2019 - 2024. All rights reserved.