数据库表格简化结构,col1 col2 col3 
1      2   1
1      2   2
2      2   4
2      3   2
3      3   5
3      2   3这是3个列。首先group by col2那么分组以后我想用having 对每个组进行排列,不是这个数据结果,
也就是说
最后结果应该是 1  2   1
1  2   2
3  2   3
3  2   4
2  3   2
3  3   5
然后 获取每个组的第一条数据也就是 1   2  1
2   3  2 谢谢各位高手 帮小弟哈

解决方案 »

  1.   

    第一个
    SELECT *
    FROM TB
    ORDER BY COL2,COL3,COL1第二个
    SELECT *
    FROM TB T1
    WHERE NOT EXISTS(
    SELECT 1 FROM T2 WHERE T2.COL2=T1.COL2 AND T2.COL3>T1.COL3
    )
      

  2.   


    select col2,
           col3
    from test t
    where col1 in(select top 1 col1 from test where col2=t.col2 order by col3 asc)
      

  3.   

    第二个写错了,应该是
    SELECT *
    FROM TB T1
    WHERE NOT EXISTS(
    SELECT 1 FROM T2 WHERE T2.COL2=T1.COL2 AND T2.COL3<T1.COL3
    )
      

  4.   

    select * from
    (select *,row_number() over(partition by col2 order by col2) as rownum  
    from col表) as tb1
    where rownum<2 
      

  5.   

    select col1,col2,col3 from(select *,rank() over (order by col2) as nn1,rank() over (order by col2,col1,col3) as nn2 from table1 
    ) a where nn1=nn2