Sql 从列中计算值

Sql 从列中计算值,sql,sql-server,Sql,Sql Server,我正在尝试在SQL Server中创建一个脚本,该脚本将对列下的值进行计数,但我希望它仍然报告未计数的缺失值 目前,我使用group by进行了以下设置,但它将结果减半: select count(ID) as Count, Building, ID from table group by Building, ID 我希望我的输出显示每个ID的计数,如果每个ID没有计数,则显示空值 Building ID 1234 1 1234 2 4567 3 4567

我正在尝试在SQL Server中创建一个脚本,该脚本将对列下的值进行计数,但我希望它仍然报告未计数的缺失值

目前,我使用group by进行了以下设置,但它将结果减半:

select count(ID) as Count, Building, ID
from table
group by Building, ID
我希望我的输出显示每个ID的计数,如果每个ID没有计数,则显示空值

Building  ID
1234      1
1234      2
4567      3
4567      4
8910      5
0         6

Want the Output To Be:
Building  ID Count
1234       1   2
1234       2   2
4567       3   2
4567       4   2
8910       5   1
0          6   0  
总人口20万。我希望看到200000条记录,每个名称的总计数或空值。当我运行上面的脚本时,每个记录获得1

示例:如果ID 1的计数为2,而ID 2的计数为2,我希望两个ID都显示为每个ID的单独计数。

试试看

select count(name) as Count, ID, Building
from table
group by ID, Building

您需要从子查询中获取计数,然后加入该子查询

SELECT 
   CASE WHEN t1.building is null THEN 0
   ELSE t1.building END AS Building,
   t1.id, 
   CASE WHEN t1.building is null THEN 0
   ELSE t2.count END AS Count
FROM table t1
JOIN (SELECT building, COUNT(*) as count 
      FROM table 
      GROUP BY building) AS t2 ON t2.building = t1.building OR (t2.building is null AND t1.building is null)

编辑您的问题并(1)标记您正在使用的数据库;(2) 显示样本数据;(3) 显示期望的结果。“Report missing values not counted”(报告缺少未计数的值)没有真正的意义。这与问题中显示的语句有什么不同?当此查询工作时,我不想计算空值。我希望它们显示为每个ID的0,该ID的建筑值为空。然后我们需要使用案例,当我更新答案时,对于没有建筑编号的ID,我仍然没有得到0。我不想计算0的空值。我希望它们按照没有建筑编号的ID显示。@Jeff抱歉,您需要在我的回答中使用第二个连接,我忘记更改它,尽管文本中说要将其用于空值。。。我再做一次更新