Sql 从客户机数据表中选择计数(不同的CLIEND\u ID)的奇怪行为是什么?

Sql 从客户机数据表中选择计数(不同的CLIEND\u ID)的奇怪行为是什么?,sql,sql-server,select,count,distinct,Sql,Sql Server,Select,Count,Distinct,你能解释一下count distinct client_id语句的这种奇怪行为吗 用于: 我有6000行 以及 SELECT count(distinct client_id) from clients_data where bank_name ='SABB' and tstatus = 0 and cif_type = 'CARD' 我有5964 以及 我有42排。 但是 第一个查询只得到6000个。 这些额外的6行是从哪里来的 注意:现在没有任何建议的数据。 图像为:可能是因为您有一些值

你能解释一下count distinct client_id语句的这种奇怪行为吗

用于:

我有6000行

以及

SELECT count(distinct client_id)
from clients_data where bank_name ='SABB' and tstatus = 0  and cif_type = 'CARD'
我有5964 以及

我有42排。 但是

第一个查询只得到6000个。 这些额外的6行是从哪里来的

注意:现在没有任何建议的数据。
图像为:

可能是因为您有一些值的cif\u类型为空或空

SELECT client_id FROM clients_data GROUP by client_id HAVING count(client_id) > 1

您是否有特定客户id的多个记录?运行上述命令将告诉您。

可能有六个客户id同时具有卡和贷款。

建议您的六个客户id以cif类型的“贷款”和cif类型的“卡”显示在行中。尝试在3种情况下计算行数,但不使用DISTINCT。你应该先找出数字,然后再加起来

一个客户id的多个记录?有6个客户id具有cif类型“卡”和cif类型“贷款”。原因是客户id不唯一。这就是全部。cif_类型可以是“CARD”或“LOAN”,不是因为我们都使用“=”。用T作为从客户数据中选择客户id,其中bank_name='SABB'和tstatus=0选择*从T中,cif_类型='LOAN'交叉选择*从T中,cif_类型='CARD'返回?这将解释更具体的查询的较低总和,但它们加起来比一般的要多。不是我的反对票
SELECT count(distinct client_id) 
from clients_data where bank_name ='SABB' and tstatus = 0  and cif_type = 'LOAN'
5964 + 42 = 6006
SELECT client_id FROM clients_data GROUP by client_id HAVING count(client_id) > 1