在纯SQL中对行进行分组

lor*_*ain 2 sql sql-server grouping

我有一个包含日期和数字列的表,如下所示:

date        Number 
1-1-2012    1
1-2-2012    1
1-3-2012    2
1-4-2012    1

我想创建一个SQL查询,将具有相同Number的行分组并采用最小日期.仅当值iof Number与上一行/下一行相同时,才会发生分组.所以,结果是

date        Number 
1-1-2012    1
1-3-2012    2
1-4-2012    1

.

Cheerz,Lordkain

Joe*_*eph 6

试试这个:

WITH   CTE AS(
       SELECT * ,ROW_NUMBER() OVER (ORDER BY [DATE] ) - 
                 ROW_NUMBER() OVER (PARTITION BY NUMBER ORDER BY [DATE] ) AS ROW_NUM
       FROM TABLE1)
SELECT NUMBER,MIN(DATE) AS DATE
FROM   CTE
GROUP BY ROW_NUM,NUMBER
ORDER BY DATE
Run Code Online (Sandbox Code Playgroud)


SQL小提琴演示

  • SQLFiddle是非常有用的工具.它支持`ROW_NUMBER()` (2认同)