使用 MSSQL 分组取出第一条记录(mssql 分组取首条)

在SQL Server中使用GROUP BY 语句对查询结果进行分组,以及根据组构造查询结果,能够让我们更加灵活的地分析、掌握数据的趋势,下面就来详解如何使用GROUP BY 语句取出每个组的第一条记录,使用MSSQL这样分组取出第一条记录:

1.首先用GROUP BY 语句对目标表数据进行分组,以指定字段来进行分组,例如:  SELECT 时间 , SUM(数量) FROM test GROUP BY 时间

2.在分组结果上添加行号,以便后续取出每组第一条记录,这里使用了ROW_NUMBER()函数,例如:SELECT 时间 , SUM(数量), ROW_NUMBER() OVER(PARTITION BY 时间 ORDER BY 时间 ASC) AS row_num FROM test GROUP BY 时间

3.按照行号取出每组的第一条记录,ON的条件为:row_num=1,例如:

SELECT t2.时间 , t2.SUM(数量)  FROM test t2 INNER JOIN    (SELECT 时间 , SUM(数量), ROW_NUMBER() OVER(PARTITION BY 时间 ORDER BY 时间 ASC) AS row_num FROM test GROUP BY 时间)

t1 on t2.时间 = t1.时间 and t1.row_num=1

完成上述步骤后,便可以得到每组的第一条记录,用MSSQL分组取出第一条记录的实现,就可以完成了。

除了GROUP BY 语句,在SQL Server中还有很多种取出某一组的第一条记录的方法,例如使用Min()函数对某一列进行排序取出第一条记录,或者使用联表查询,比如:

SELECT TOP 1 t1.时间 , t2.数量

FROM test t1

INNER JOIN test t2 on t1.时间 = t2.时间

ORDER BY t1.时间 ASC

上面就是使用MSSQL分组取出第一条记录的方法,此外,在实际工作中,也可以根据需要灵活运用其他函数,合理地使用SQL语句来实现相应的功能,才能更好的把握数据的趋势性及特点。


数据运维技术 » 使用 MSSQL 分组取出第一条记录(mssql 分组取首条)