在老大的基础上改一下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这样可以去掉只做化疗不做手术的记录,也就是得到所有“手术”的人
select pid,min(treat_date),treat_method form table where treate_method in ('s','c') 如果你的表中每个病人都只有一次手术的话,这样就行了, 如果不止一次手术,查出来的就是所有有"手术"治疗的病人的第一次化疗日期和第一次手术日期
改改上面那个~~~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') 同样也要确保每个病人只有一次手术治疗
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这样可以去掉只做化疗不做手术的记录,也就是得到所有“手术”的人
form table
where treate_method in ('s','c')
如果你的表中每个病人都只有一次手术的话,这样就行了,
如果不止一次手术,查出来的就是所有有"手术"治疗的病人的第一次化疗日期和第一次手术日期
union
select pid,min(treat_date),treat_method
form table
where treate_method='c' and pid = (select pid
form table
where treat_method = 's')
同样也要确保每个病人只有一次手术治疗
union 的效率不好
比该成union all