SQL SERVER QUERY获取表中的Number of Distinct列

ric*_*mer 1 sql sql-server-2008 database-partitioning

这是样本预期结果表

在此输入图像描述

如您所见,我有一个具有相应区域的租户列表.我需要创建一个列'Count',它将计算给定TENANT中不同Area的数量.例如,租户'CMBINA13'有两个不同的区域.因此它应该在计数列中输出2,与仅具有1个不同区域的下一个租户示例相同.

这是我最初得到的

select tenantcode ,  b.name , AreaSqm  ,
       COUNT(*) OVER (PARTITION BY AreaSqm) AS 'Count'
from    TENANT
Run Code Online (Sandbox Code Playgroud)

并且它提供了这样的逻辑错误输出

在此输入图像描述

任何帮助将不胜感激 :)

Mah*_*mal 5

你必须要数DISTINCT areasqm,但你不能这样做COUNT .. OVER,你不能GROUP BY tenantcode , name , AreaSqm直接做到这一点.因此,一种解决方案是计入DISTINCT areasqm子查询,如下所示:

SELECT
  t.tenantcode , name , AreaSqm  , c.areaCount
FROM TENANT AS t
INNER JOIN
(
   SELECT tenantcode, COUNT(DISTINCT areasqm) AS areaCount
   FROM tenant 
   GROUP BY tenantcode
) AS c ON t.tenantcode = c.tenantcode;
Run Code Online (Sandbox Code Playgroud)

这会给你:

在此输入图像描述