Select sum(F1),F2,count(F3) FROM TABLE WHERE ... group by F2

解决方案 »

  1.   

    select F1,distinc F2,F3 from table where...
      

  2.   

    TRY:select distinc F2,F1,F3 from table where...
      

  3.   

    select A.f1, A.f2, A.f3 from youTable A
      inner join youTable B on A.f1 > B.f1 and A.f2 = B.f2
      where ...
      

  4.   

    create table AAA(f1 int, f2 int, f3 int)insert AAA values(1, 2, 112)
    insert AAA values(2, 7, 121)
    insert AAA values(3, 3, 143)
    insert AAA values(4, 9, 152)
    insert AAA values(5, 4, 169)
    insert AAA values(6, 0, 178)
    insert AAA values(7, 3, 179)
    insert AAA values(8, 9, 180)
    insert AAA values(9, 4, 181)
    insert AAA values(10, 0, 182)select f1, f2, f3
     from AAA
     where f1 in(select Min(f1) from AAA group by f2)
      

  5.   

    //Temp1中是唯一的F2以及对应的F1的最小值。
    select Min(F1) as F1, F2 as F2 into #Temp1 From AAA group by F2
    select distinct a.F1,a.F2,a.F3 From AAA a, #Temp1 b where a.F1=b.F1 and a.F2=b.F2
    drop table #temp1.如果F1,F2定下来之后F3仍不唯一,那么
    select distinct a.F1,a.F2,Min(a.F3) From AAA a, #Temp1 b where a.F1=b.F1 and a.F2=b.F2
    group by a.F1, a.F2如果是SQL2000,可以将虚表嵌入查询语句一次搞定
      

  6.   

    我在Google上找到答案
    select f1,f2,f3 from table where f1 in (select min(f1) from table group by f2)
    我试过,速度最快、最简洁
    与兄弟们共享
    唯一遗憾的是,不能获得f2重复的行数
    那个子查询要是能这么写就好啦
    select min(f1),count(f1) from table group by f2
      

  7.   

    一般来说,在表A中有若干字段C1,...Cn,现在要为每个不同的Ci,要返回表中的一条记录,而只选取次序OrderString= C1,C2desc,...Ci-1,Ci+1,...Cn中最前面的记录,可以采用下面的方法:
    1建立一个临时表,包含自增字段id以及表A中的所有字段。
     如create table #Buffer(id int identity, C1,C2,...Cn) ;
     将表A中的内容按照OrderString导入临时表中。
      insert into #Buffer(C1,C2,...Cn) select * from A order by OrderString ;
    2这样所要做的就是从#Buffer中对每个Ci的不同值,选取最小的id所对应的记录。
     如 select Min(id) as id, Ci into #temp1 from #Buffer group by Ci
        select C1,C2,...Cn From #Buffer a, #temp1 b where a.id=b.id.
    变态吧?不过也是一种方法:)
      

  8.   

    Select F1,F2,F3 FROM TABLE GROUP BY F2