如何计算每个分区中特定值的出现?

时间:2019-06-28 11:19:34

标签: tsql

我需要为表的每个分区计算-1值的出现次数。如果一个分区仅包含两行,我可以使用min,max函数,但是对于多于两行的分区,这不是解决方案。

CREATE TABLE #Data(ID int,name_of_institution varchar(200),wasko_id int)


INSERT INTO #Data(ID,name_of_institution,wasko_id)


SELECT 4822,'Bailiff xxx',-1 union all

SELECT 4820,'Bailiff xxx',-1 union all

SELECT 4819,'Bailiff xxx',2332 union all

 SELECT 4700,'Bailiff yyy',-1 union all

SELECT 4701,'Bailiff yyy',222 


select DENSE_RANK() over (order by name_of_institution) as DR,* from #Data

我希望'Bailiff xxx'分区的输出为2,而'Bailiff yyy'分区的输出为1。

1 个答案:

答案 0 :(得分:2)

使用像sumif这样的excel:条件插入的总和,其中True为1,而False为0:iif(condition, 1, 0)

select name_of_institution, sum(iif(wasko_id = -1, 1, 0)) as DR 
from #Data 
group by name_of_institution