sql - 在 SQL 中对重复的行进行分组

标签 sql sql-server sql-server-2005 tsql

我在 SQL Server 2005 中有下表和数据:

create table LogEntries (
  ID int identity,
  LogEntry varchar(100)
)

insert into LogEntries values ('beans')
insert into LogEntries values ('beans')
insert into LogEntries values ('beans')
insert into LogEntries values ('cabbage')
insert into LogEntries values ('cabbage')
insert into LogEntries values ('beans')
insert into LogEntries values ('beans')

我想对重复的 LogEntries 进行分组,以便得到以下结果:

LogEntry  EntryCount
beans     3
cabbage   2
beans     2

除了使用游标之外,您能想到在 TSQL 中执行此操作的任何方法吗?

最佳答案

我想这样就可以了...虽然没有检查得太彻底

select 
    COUNT(*),subq.LogEntry 
from 
(
    select 
        ROW_NUMBER() OVER(ORDER BY id)-ROW_NUMBER() OVER(PARTITION BY logentry ORDER BY id) as t,*
    from 
        LogEntries
) subq 
group by 
    subq.t,subq.LogEntry 
order by 
    MIN(subq.ID)

关于sql - 在 SQL 中对重复的行进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/374079/

相关文章:

sql - 如何将出生日期列转换为日期格式(DD/MM/YYYY)

MySql解析,在不知道分割数的情况下分割成几行

sql - T-SQL 动态枢轴

sql - 我可以将 SQL Server Enterprise 镜像到标准吗?

sql - 如何在不让日志文件失控的情况下从大表中删除过期数据?

c# - 一台服务器上 ASP.NET 站点的最大数量/限制

sql - 在 SQL Server Management Studio 2005 中禁用 "save"提示

MySQL 数据库所有表中最后插入的行

sql - SSAS Tabular Role隐藏一些表

sql-server - sql Management Studio 超过 7 列的 t-sql 唯一约束