在普通sql中分组行

在普通sql中分组行,sql,sql-server,grouping,Sql,Sql Server,Grouping,我有一个表,列为Date和Number,如下所示: date Number 1-1-2012 1 1-2-2012 1 1-3-2012 2 1-4-2012 1 我想进行一个sql查询,将具有相同编号的行分组,并采用最小日期。只有当值iof Number与上一行/下一行相同时,才能进行分组。所以结果是 date Number 1-1-2012 1 1-3-2012 2 1-4-2012 1 干杯,洛德凯恩 SELECT

我有一个表,列为Date和Number,如下所示:

date Number 1-1-2012 1 1-2-2012 1 1-3-2012 2 1-4-2012 1 我想进行一个sql查询,将具有相同编号的行分组,并采用最小日期。只有当值iof Number与上一行/下一行相同时,才能进行分组。所以结果是

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

干杯,洛德凯恩

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
试试这个:

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

不要太快地指出简单的问题;你的答案没有达到用户的要求。那里。。更新了我的评论:还有一点,既然我很愚蠢,为什么我的解决方案不起作用?对我来说,是时候学习了。我还更新了我的评论:你的解决方案不起作用,因为查询将返回2行,而我想要3行!乔的答案是对的,我也比你的答案高出三倍,但日期全搞错了。谢谢你的回复!!嗨,乔,记录的顺序是按日期排列的。我如何使用上一个/下一个分组?+1我也试着这么做,但你打败了我@hims056:非常感谢。。我想做一把小提琴。。但这对我来说是个错误。。我认为行数函数在fiddleSQLFiddle中不起作用是非常有用的工具。而且它还支持ROW_NUMBERWorks,这很有魅力:我不知道如何使用语法进行分区。谢谢分享并向我学习新东西