2015-11-20 86 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