2

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

日期编号
1-1-2012 1
2012 年 1 月 2 日 1
2012 年 1 月 3 日 2
2012 年 1 月 4 日 1

我想做一个 sql 查询,将具有相同编号的行分组并取最短日期。只有当 iof Number 的值与上一行/下一行相同时,才会发生分组。所以结果是

日期编号
1-1-2012 1
2012 年 1 月 3 日 2
2012 年 1 月 4 日 1

.

干杯,洛德凯恩

4

2 回答 2

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


SQL小提琴演示

于 2012-10-04T11:25:49.417 回答
0
SELECT Number, MIN(date)
FROM table
GROUP BY Number
ORDER BY Number

既然你的要求更具体一点,这个怎么样?我自己没有检查过,但考虑到你的要求,一些可能有用的东西..

SELECT date, Number FROM (
SELECT Number, 
(SELECT MIN(date) FROM #table t2 WHERE t1.date <> t2.date AND t1.Number = t2.Number) AS date 
FROM table t1
) AS a
GROUP BY number, date
于 2012-10-04T11:03:35.023 回答