select 
  pid,min(treat_date),treat_method
from 
  tab_name
group by pid,treat_method

解决方案 »

  1.   

    在老大的基础上改一下select * from tab_name where treat_method ='s'
    union
    select a.* 
    from 
      (
         select pid,min(treat_date) treat_date,treat_method 
           from tab_name 
           where treat_method='c' 
           group by pid,treat_method
      ) a,
      (
        select * 
          from tab_name 
          where treat_method ='s'
      ) b 
    where a.pid=b.pid这样可以去掉只做化疗不做手术的记录,也就是得到所有“手术”的人
      

  2.   

    select pid,min(treat_date),treat_method
    form table
    where treate_method in ('s','c')
    如果你的表中每个病人都只有一次手术的话,这样就行了,
    如果不止一次手术,查出来的就是所有有"手术"治疗的病人的第一次化疗日期和第一次手术日期
      

  3.   

    改改上面那个~~~select pid,treat_date,treat_method
    union
    select pid,min(treat_date),treat_method
    form table
    where treate_method='c' and pid = (select pid
         form table
         where treat_method = 's')
    同样也要确保每个病人只有一次手术治疗
      

  4.   

    建议不要使用union ,
    union 的效率不好
    比该成union all