比如我现在有一张表是这样的: 
FNUMBER FA FB FC FE 
32.001 X Y 1 2 
32.001 Y X 3 4 
32.002 N H 0 1 
32.002 U K 9 8 
32.002 L D 4 9 
我想取出这样的结果: 
FNUMBER FA FB FC FE 
32.001 X Y 1 2 
32.002 N H 0 1 
如果用distinct fnumber来取数据,就取不出来其他的列,到底应该咋个取啊?也就是说我想取出FNUMBER唯一的行记录。

解决方案 »

  1.   

    表:a
    id name
    11 aaaa
    11 bbbb
    11 cccc
    22 dddd
    22 eeee
    22 ffff
     
    如何将表中的相同id号的第一条记录取出来?即:
    id name
    11 aaaa
    22 dddd
    CREATE TABLE #a (
           [id] [char] (10),
           [name] [char] (10) 
    )insert into #a(id,name) values('11','aaaa')  
    insert into #a(id,name) values('11','bbbb')  
    insert into #a(id,name) values('11','cccc')  
    insert into #a(id,name) values('22','dddd')  
    insert into #a(id,name) values('22','eeee')  
    insert into #a(id,name) values('22','ffff')  select * from #a b
    where name=(select top 1 name from #a where id=b.id)drop table #aid         name       
    ---------- ---------- 
    11         aaaa      
    22         dddd      (所影响的行数为 2 行)
    CREATE TABLE #a (
           [id] [char] (10),
           [name] [char] (10) 
    )insert into #a(id,name) values('11','aaaa')  
    insert into #a(id,name) values('11','bbbb')  
    insert into #a(id,name) values('11','cccc')  
    insert into #a(id,name) values('22','dddd')  
    insert into #a(id,name) values('22','eeee')  
    insert into #a(id,name) values('22','ffff')  select id1=identity(int,1,1),* into #t from #a
    go
    select id,name from #t where id1 in(select min(id1) from #t group by id)drop table #a
    drop table #tid         name       
    ---------- ---------- 
    11         aaaa      
    22         dddd      (所影响的行数为 2 行)
      

  2.   

    select * from table a where not exists(select 1 from table where FNUMBER=a.FNUMBER
    and checksum(FA,FB,FC,FE) > checksum(a.FA,a.FB,a.FC,a.FE))
      

  3.   

    select * from tb a where 
    FA=(select top 1 FA from tb where a.FNUMBER =FNUMBER ),
    FB=(select top 1 FB from tb where a.FNUMBER =FNUMBER ),
    FC=(select top 1 FC from tb where a.FNUMBER =FNUMBER ),
    FD=(select top 1 FD from tb where a.FNUMBER =FNUMBER )
      

  4.   

    相同FNUMBER 時應該取哪條記錄,你應該知道(或許還有別的條件或業務邏輯),若是按照上面的幾種方法,當此表有30個字段時,像上面那些那樣寫也太無聊了吧..