一个案例 sql语句不会写 来问问大神

有两个表,一个体检套餐表 taocan ,一个体检项目表 xiangmu , 项目表main_id关联套餐表 id,  一个体检套餐对应多个体检项目

现在要查询体检套餐的套餐名称和婚姻状况,套餐的婚姻状况是根据体检项目表来计算的,就是所有体检项目中有一个项目是已婚的那么这个套餐就是已婚的,如果都为未婚的 ,那么这个套餐就是未婚。 (项目表中婚否字段暂且为isM  0表示已婚 1表示未婚)

select taocan.name as '套餐名', case when xm.isM is null then '未婚' else '已婚' end as '婚姻状况'
from taocan
left join (
select top 1 main_id,isM from
xiangmu where xiangmu.main_id = taocan.id and xiangmu.isM=0
) xm on xm.main_id = taocan.id

可以查到每个套餐的套餐名和婚姻状况。

select a.套餐名称,a.婚姻状况 from taocan a,xiangmu b where a.id=b.main_id and b.isM ='0'(已婚套餐)
select a.套餐名称,a.婚姻状况 from taocan a,xiangmu b where a.id=b.main_id and b.isM ='1'(未婚套餐)

select 
    taocan.id,
        min(xiangmu.isM) --- 如果有一个项目的婚姻状况是已婚,则为0;如果所有都是未婚,则是1
from taocan
left join xiangmu 
    on(taocan.id = xiangmu.id)
group by 
    taocan.id
select 套餐id,case when(MIN(isM)<1) then '已婚' else '未婚' end  from 体检项目表 group by 套餐id

这是mssql的,oracle没用过