Microsoft SQL查询使用Over Partition获取DISTINCT值的计数

时间:2015-11-20 17:12:55

标签: sql sql-server sql-server-2008 tsql sql-server-2012

我正在尝试使用Over Partition获取所有Distinct Case Sensitive值的Count。

我有以下数值:

FirstCol    SecCol

A           E
A           E
A           a
A           e

我希望我的结果是:

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

我正在尝试使用下面的OVER PARTITION方法实现此目的,但我的查询得到以下结果:

SecCol    FirstCol    SecColCount
a         A           1
e         A           3

以下是我尝试使用的查询:

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

1 个答案:

答案 0 :(得分: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