取分组 日期最大的数据 30Ch920427]

发布时间:2016-12-11 6:47:22 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"取分组 日期最大的数据 30Ch920427]",主要涉及到取分组 日期最大的数据 30Ch920427]方面的内容,对于取分组 日期最大的数据 30Ch920427]感兴趣的同学可以参考一下。

将数据 分组,取得日期最大的记录,如果日期最大有相同 就一起取 如下: ID Date 1 2012-3-10 1 2012-3-10 1 2012-3-4 2 2012-2-10 2 2012-2-10 2 2012-3-8 2 2012-3-9 3 2012-5-12 3 2012-4-12 3 2012-1-2 4 2012-5-5 5 2012-3-7 6 2012-4-2 7 2012-2-1 要 获得这样的结果: ID Date 1 2012-3-10 1 2012-3-10 2 2012-3-9 3 2012-5-12 4 2012-5-5 5 2012-3-7 6 2012-4-2 7 2012-2-1

SELECT * FROM TB T WHERE DATE=(SELECT MAX(DATE) FROM TB WHERE ID=T.ID)

1楼的结果不对WITH test (ID, [Date])  AS   (  SELECT 1, '2012-3-10'  UNION ALL SELECT 1, '2012-3-10'  UNION ALL SELECT 1, '2012-3-4'  UNION ALL SELECT 2, '2012-2-10'  UNION ALL SELECT 2, '2012-2-10'  UNION ALL SELECT 2, '2012-3-8'  UNION ALL SELECT 2, '2012-3-9'  UNION ALL SELECT 3, '2012-5-12'  UNION ALL SELECT 3, '2012-4-12'  UNION ALL SELECT 3, '2012-1-2'  UNION ALL SELECT 4, '2012-5-5'  UNION ALL SELECT 5, '2012-3-7'  UNION ALL SELECT 6, '2012-4-2'  UNION ALL SELECT 7, '2012-2-1'  )  SELECT id,MIN ([Date])[Date]  FROM Test   GROUP BY id    /*  id          Date  ----------- ---------  1           2012-3-10  2           2012-2-10  3           2012-1-2  4           2012-5-5  5           2012-3-7  6           2012-4-2  7           2012-2-1    (7 行受影响)  */

引用 2 楼  的回复:1楼的结果不对 SQL code WITH test (ID,    [Date])  AS   (  SELECT 1,    '2012-3-10'  UNION ALL SELECT 1,    '2012-3-10'  UNION ALL SELECT 1,    '2012-3-4'  UNION ALL SELECT 2,    '2012-2-10'  UN…… --DROP TABLE #TB SELECT 1 AS ID,    CONVERT(DATETIME,'2012-3-10') DATE INTO #TB  UNION ALL SELECT 1,    '2012-3-10'  UNION ALL SELECT 1,    '2012-3-4'  UNION ALL SELECT 2,    '2012-2-10'  UNION ALL SELECT 2,    '2012-2-10'  UNION ALL SELECT 2,    '2012-3-8'  UNION ALL SELECT 2,    '2012-3-9'  UNION ALL SELECT 3,    '2012-5-12'  UNION ALL SELECT 3,    '2012-4-12'  UNION ALL SELECT 3,    '2012-1-2'  UNION ALL SELECT 4,    '2012-5-5'  UNION ALL SELECT 5,    '2012-3-7'  UNION ALL SELECT 6,    '2012-4-2'  UNION ALL SELECT 7,    '2012-2-1' SELECT * FROM #TB T WHERE DATE=(SELECT MAX(DATE) FROM #TB WHERE ID=T.ID) /* ID          DATE                                                    ----------- ------------------------------------------------------  7           2012-02-01 00:00:00.000 6           2012-04-02 00:00:00.000 5           2012-03-07 00:00:00.000 4           2012-05-05 00:00:00.000 3           2012-05-12 00:00:00.000 2           2012-03-09 00:00:00.000 1           2012-03-10 00:00:00.000 1           2012-03-10 00:00:00.000 (所影响的行数为 8 行)

原来倒序了.....我说怎么执行你的和楼主结果不一样呢

引用 4 楼  的回复:原来倒序了.....我说怎么执行你的和楼主结果不一样呢 还有一点。日期弄成字符列的话。楼主的日期长度不一致,那样肯定问题。

你convert(date)不更好吗?datetime还多了那么多时分秒个人喜好而已...

 哈哈,谢谢各位,唉,没这么多经验,学习了

上一篇:CPU对内存寻址是直接命中的,为什么搜寻数据库需要遍历?? 20woodangel]
下一篇:求XQuery的写法 100managingsecurity]

相关文章

相关评论