sql - Count(*) 返回 null

标签 sql tsql sql-server-2008

我有通话详情记录表。每行都有 UserIdUserBNumber

我还有一个表,其中包含 UserIdNumber,因此有了数字我可以说出用户的 ID 是什么。

这样我就可以从每个 CDR 记录中说出调用者和接听者的 ID。

有时用户会调用不在我的用户数据库中的号码(网络外的电话)

现在我想要查询给我 UserAId(caller), UserBId(receiver), count(*)

这样我就可以知道用户之间的连接数。

UserAId, UserBId, NumberOfConnections

如果接听电话的号码不在我的表中,则 UserA 调用网络外的人。

我希望得到的结果是:

UserAId, NULL, NumberOfConnectionsOutsideTheNetwork

这是我的查询:

TableA: CDR Table
TableB: User -> Number table

select A.UserId, B.UserId, count(*)
from select tableA A 
left outer join tableB B
on A.UserBNumber = B.Number
group by A.UserId, B.UserId   

问题是我 Count(*) 有时会返回 NULL。

我做错了什么?

最佳答案

您的查询在尝试执行计数时正在执行外部联接。如果 B.UserId 被列为 NULL,那么 count(*) 也将返回 NULL。您可以通过使用“count (A.*)”显式执行 A 计数或将其包装在 ISNULL() 中来解决此问题。

select A.UserId, B.UserId, count(A.*)
  from select tableA A 
  left outer join tableB B
    on A.UserBNumber = B.Number
 group by A.UserId, B.UserId   

select A.UserId, B.UserId, isnull(count(*),0)
  from select tableA A 
  left outer join tableB B
    on A.UserBNumber = B.Number
 group by A.UserId, B.UserId   

关于sql - Count(*) 返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4115710/

相关文章:

SQL 到 powerBI 表达式?

php - CakePHP,表$belongsTo 两个表:错误Error: Cannot redeclare table::$belongsTo

mysql - Ruby on Rails SQL 查询返回#<ActiveRecord::Relation:

SQL SERVER 2008 获取最后插入的值

sql-server - 如何删除SQL Server数据库中的所有表?

mysql - 如何使用嵌套的 SELECT 子查询优化 UPDATE?

sql - 使用参数更新存储过程来自不同表的列名

c# - LINQ 查找所有子实体满足要求

SQL Server 聚合非常大的表

sql-server-2005 - 使用 TCP/IP 访问 SQL Server 2008 Express 数据库