select (d.num_ssn <> a.num_ssn) as have_different_ssn_count,
(d.sales <> a.sales) as have_different_sales
from (select count(distinct ssn) as num_ssn,
coalesce(sum(sales), 0) as sales
from demo
) d cross join
(select count(distinct ssn) as num_ssn,
coalesce(sum(sales), 0) as sales
from agent
) a;
select (case when d.num_ssn <> a.num_ssn then 1 else 0 end) as have_different_ssn_count,
(case when d.sales <> a.sales then 1 else 0 end) as have_different_sales
3条答案
按热度按时间brgchamk1#
您可以分别编写两个查询以在结果查询中进行计数
基本上,内部查询所做的是检查计数是否相等,如果为真则输出1,如果为假则输出0。既然您要求输出1,如果它是false,我就使用
'!='
签字。您也可以在场景2中尝试相同的过程
plicqrtu2#
对于场景1
如果要计算唯一ssn,则:
对于场景2:
qvk1mo1f3#
我建议使用一个包含两组信息的查询:
注意:这将返回布尔值--
true
/false
而不是1
/0
. 如果你真的想0
/1
,然后使用case
:如果您不仅对总数感兴趣,而且对两个表中的代理/销售组合都相同,我也不会感到惊讶。如果是这样的话,请提出一个新的问题,并解释清楚。样本数据和期望的结果有帮助。