2015-11-20 58 views
2

我正在尝试使用Over Partition来计算所有不同区分大小写的值。Microsoft SQL Query使用Over Partition获取DISTINCT值的计数

我有以下值:

FirstCol SecCol 

A   E 
A   E 
A   a 
A   e 

我想我的结果是:

SecCol FirstCol SecColCount 
a   A   1 
e   A   1 
E   A   2 

我想这一点使用下面的OVER划分方法来实现,但我得到以下我的查询结果:

SecCol FirstCol SecColCount 
a   A   1 
e   A   3 

下面是该查询我试图使用方法:

SELECT Distinct SecCol, FirstCol, 'SecColCount' = count(SecCol) OVER (PARTITION BY SecCol) 
FROM #LocalTempTable; 

回答

3

对tempdb/db的默认排序规则是不区分大小写的。使用大小写敏感的,而不是:

SELECT DISTINCT 
    SecCol COLLATE sql_latin1_general_cp1_cs_as, 
    FirstCol, 
    [SecColCount] = COUNT(SecCol) OVER (PARTITION BY SecCol 
             COLLATE sql_latin1_general_cp1_cs_as) 
FROM #LocalTempTable; 

LiveDemo