sql - Microsoft SQL 查询使用过度分区获取 DISTINCT 值的计数

标签 sql sql-server sql-server-2008 t-sql sql-server-2012

我正在尝试使用过度分区来获取所有区分大小写的不同值的计数。

我有以下值(value)观:

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;

最佳答案

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

关于sql - Microsoft SQL 查询使用过度分区获取 DISTINCT 值的计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33832383/

相关文章:

c# - 从 C# 自动打开 SSMS

sql-server - 从 Oracle 到 SQL 2019 的外部表

sql-server - 在 SQL Server 中创建多组数据

sql-server - 从 sql 中的长时间格式获取小时和分钟时间的最简单方法?

sql - SQL Server 2008 上缺少结束注释标记 "*/"错误,而不是 2005

sql-server - SQL Server正则表达式约束

C# LINQ 存储过程

mysql - 为什么 mySql 不让我声明外键?

mysql - 2 个表 - 相互查询并将每个表中的 pk 存储到一个新表中

mysql - 如何在两个以上的 MySQL 表上执行最佳的 FULL OUTER JOIN?