表名: Z_Commerci_reg(字段: id,fid,rtime,ruser,rprod)
/*
编号     外键(id)      时间                   员工     效率
7 2010 2011-05-27 10:31:00 员工A 0_A
8 2010 2011-05-27 10:32:00 员工A 5_B
9 2010 2011-05-27 10:32:00 员工A 10_B
11 2010 2011-05-27 10:48:00 员工A 10_A
15 1978 2011-05-27 12:24:00 员工A 0_A
13 2010 2011-05-27 10:49:00 员工A 15_B
14 2010 2011-05-27 10:49:00 员工A 20_B
16 1978 2011-05-27 12:24:00 员工A 5_B
17 1978 2011-05-27 12:24:00 员工A 10_B
18 1978 2011-05-27 12:25:00 员工A 10_A
*/
我想要得到下面这个结果:
/*
编号     外键(id)      时间                   员工     效率
14 2010 2011-05-27 10:49:00 员工A 20_B
18 1978 2011-05-27 12:25:00 员工A 10_A
*/
      有没有哪个会做啊.....

解决方案 »

  1.   

    select id,fid,rtime,ruser,rprod from Z_Commerci_reg order by rtime desc group by fid
      

  2.   

    消息 8120,级别 16,状态 1,第 1 行
    选择列表中的列 'Z_Commerci_reg.id' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。
      

  3.   

    select id,max(fid),rtime,ruser,rprod from Z_Commerci_reg order by rtime desc group by fid
      

  4.   

    消息 8120,级别 16,状态 1,第 1 行
    选择列表中的列 'Z_Commerci_reg.id' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。
      

  5.   

    按照外键id分组,各取时间最后的一次记录。
    select top1 id,fid,rtime,ruser,rprod from Z_Commerci_reg order by rtime desc group by fid
      

  6.   

    少了个空格select top 1 id,fid,rtime,ruser,rprod from Z_Commerci_reg order by rtime desc group by fid; 
      

  7.   

     不是这个问题, 你运行一下 你写的SQl 就明白了。 
      

  8.   

    要是你用了聚合函数的话,你前面查的这些列,像rtime、ruser等,必须放在group by 后面
      

  9.   

    select id,fid,rtime,ruser,rprod from 
    (select id,fid,rtime,ruser,rprod,row_number() over(partition by fid,ruser order by rtime desc) as tmprow
     from Z_Commerci_reg)a where tmprow=1 order by id asc;