SQL SERVER:使用分区统计同一组的数据
基于上面的图片,我需要列出CountComments列,其中将计算每个位置备注列中类似数据的数量。因此,租户1和租户2在位置“EM”中总共有2个,并且只有租户3在同一位置上总共有1个。位置“CW”的计数相同 不幸的是,我得到了这个输出,使用相同的remnarks计算所有的值,而忽略了位置 这是我在代码中使用的部分SQL SERVER:使用分区统计同一组的数据,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,基于上面的图片,我需要列出CountComments列,其中将计算每个位置备注列中类似数据的数量。因此,租户1和租户2在位置“EM”中总共有2个,并且只有租户3在同一位置上总共有1个。位置“CW”的计数相同 不幸的是,我得到了这个输出,使用相同的remnarks计算所有的值,而忽略了位置 这是我在代码中使用的部分 CASE WHEN [Remarks] >= 4 THEN Remarks ELSE count(Remarks) OVER(PARTIT
CASE
WHEN [Remarks] >= 4 THEN Remarks
ELSE count(Remarks) OVER(PARTITION BY [Remarks] )
END as 'CountRemark'
试试这个
select location,tenant,remarks,count(*) over (partition by Location,remarks) as
counterremarks from table
尝试按位置和备注使用窗口函数和分区:
SELECT
Location, Tenant, Remarks,
CountRemarks = COUNT(*) OVER (PARTITION BY Location, Remarks)
FROM your_table
ORDER BY Tenant
根据您的样本数据,这将导致:
Location Tenant Remarks CountRemarks
EM Tenant1 1 2
EM Tenant2 1 2
EM Tenant3 2 1
CW Tenant4 1 2
CW Tenant5 1 2
CW Tenant6 2 1
您是否尝试过(按位置划分)?是的,它计算了相同位置的总数。否,仍然是相同的输出,计算具有相同数据的所有备注,忽略每个位置的计数。然后,您还需要在分区子句中使用位置。请参阅我编辑的回复