首页 > 解决方案 > SQL 逻辑检查

问题描述

我是 SQL/Teradata 的新手。我从第二个查询中得到的数字不是我所期望的,这让我相信我做错了什么。

我有两个条件要计算:

条件一:

owner_id= 'x'
AND
acct_mgr_user_id= 'x'

条件 2(所有其他排列):

owner_id<> 'x'
acct_mgr_user_id= 'x'


owner_id= 'x'
acct_mgr_user_id<> 'x'


owner_id<> 'x'
acct_mgr_user_id<> 'x'

查询条件 1:

SELECT Count(acct_id) FROM nr_sf_acct
WHERE owner_id= 'x'
AND acct_mgr_user_id= 'x'
AND is_sf_acct_del_y_n= 'n';

我认为这个是错误的。. .

查询条件 2

SELECT Count(acct_id) FROM nr_sf_acct
WHERE owner_id<> 'x'
OR acct_mgr_user_id<> 'x'
AND is_sf_acct_del_y_n= 'n';

在集合 2 的查询中,我想返回“所有其他排列”的计数,如上所述。

“x”指的是表中的唯一 ID 号。

任何帮助深表感谢。

标签: sqlteradata-sql-assistant

解决方案


你想否定第一个条件,所以这样做:

WHERE (NOT (owner_id = 'x' AND acct_mgr_user_id = 'x')) AND (is_sf_acct_del_y_n = 'n')

或者:

WHERE (owner_id <> 'x' OR acct_mgr_user_id <> 'x') AND (is_sf_acct_del_y_n = 'n')

推荐阅读