id       hm        sj
1        1         2011/08/29 14:56:34
1        2         2011/08/30 15:56:34
1        2         2011/08/17 20:55:34
1        3         2011/08/20 14:00:34
1        4         2011/08/17 14:20:34
2        1         2011/08/29 14:56:34
2        2         2011/08/30 15:56:34
3        2         2011/08/17 20:55:34
2        3         2011/08/20 14:00:34
2        4         2011/08/17 14:20:34
3        1         2011/08/29 14:56:34
3        2         2011/08/30 15:56:34
3        2         2011/08/17 20:55:34
3        3         2011/08/20 14:00:34
3        4         2011/08/17 14:20:34
我想要的结果就是  根据id  查询出每一笔记录的最早的那个数据
结果就是这样
1        4         2011/08/17 14:20:34
2        4         2011/08/17 14:20:34
3        4         2011/08/17 14:20:34
麻烦问一下 这个怎么写啊? 谢了

解决方案 »

  1.   

    可以试试row_number
    select id, hm, sj from (
    select id, hm, sj,row_number()over(partition by id order by sj) n from table_name) where n=1
      

  2.   

    SELECT t.id,t.hm,t.sj FROM (SELECT id,hm,sj,row_number() over(PARTITION BY ID ORDER BY sj) rn FROM ) t
    WHERE t.rn = 1
      

  3.   

    SELECT t.id,t.hm,t.sj FROM (SELECT id,hm,sj,row_number() over(PARTITION BY ID ORDER BY sj) rn FROM ) t
    WHERE t.rn = 1
      

  4.   

    select id, hm, sj from (
    select id, hm, sj,row_number()over(partition by id order by sj) n from table_name) where n=1
      

  5.   

    [code=SQL]SELECT t.id,t.hm,t.sj FROM (SELECT id,hm,sj,row_number() over(PARTITION BY ID ORDER BY sj) rn FROM test_tab) t
    WHERE t.rn = 1[/code]
      

  6.   

    select id, hm, sj from (
    select id, hm, sj,row_number()over(partition by id order by sj) n from table_name) where n=1