是从一个表里面选出指定字段,但都是varchar2型A    B     C     D
1   nam    sjd   sjs
1   aja    sks   设计师
1   wws    sss   www
2   sss    www   aaa
2   www    rrr   qqqq
2   www    aaa   ss
希望按照A列,随便选出A列不一样的一条记录,即结果可如下:A    B     C     D
1   nam    sjd   sjs
2   www    rrr   qqqq想了半天也不知道怎么弄,还是麻烦 高手来帮忙!

解决方案 »

  1.   

    select * from (select t.* row_number()over(partition by A order by A )rn from table)where rn=1
      

  2.   

    前面打错了少了个逗号
    select * from (select t.*,row_number()over(partition by A order by A )rn from table)where rn=1
      

  3.   

    t和rn是什么意思呢,字段,还是表名呢
      

  4.   

    select prtno,
           contno,
           appntno,
           (select name  from ldperson  where customerno = lccont.appntno) name
      from lccont
     where appntno in
           ('0000000190', '0000000280', '0000000660', '0000000700') 
    这是刚才的查询结果的sql,但是由于appntno有重复的,现在只要求选出appntno不一样的就可以,其余字段没有任何要求。
      

  5.   

    t是别名,习惯了, from table的时候 在后面 可以别名来引用这个表的字段。
    rn 是row_number()over()这个函数的虚拟列
    row_number()over(partition by A order by A )
    意思 以a 分组再以a 排序,再标记 每个组里面的记录处于第几行