大家好!小弟求教下
有一个DATATABLE 表
里有数据
姓名 检查项目 状态
张三 腹部彩超 未检
张三 睾丸彩超 未检
张三 乳腺彩超 未检
张 三 甲状腺彩超 排队
李三 腹部彩超 未检
李三 睾丸彩超 已检
李三 心脏彩超 未检
李三 甲状腺彩超 排队
李五 腹部彩超 未检
李五 睾丸彩超 未检
李五 甲状腺彩超 未检
....后面还有很多人..
请教下 如果筛选出像李五这样 包含彩超检查项目 并且全部状态为未检的客人
------解决思路----------------------
select * from datetable
where 状态='未检'
and 检查项目 like'%彩超%'
------解决思路----------------------
select * from datetable where 姓名 not in (select distinct 姓名 from datetable where 状态!='未检' and 检查项目 like'%彩超%')
------解决思路----------------------
select * from 状态 where 姓名 in
(
select 姓名 from
(
select 姓名,count(状态) as 数量 from
(select 姓名,状态 from 状态 group by 姓名,状态) as z group by 姓名
) as p where 数量=1
) and 状态='未检' and 项目 like '%彩超%'
------解决思路----------------------
2楼正解 我写的比较复杂了
------解决思路----------------------
SELECT *
FROM DATATABLE t WHERE 检查项目 LIKE '%彩超%'
AND NOT EXISTS(SELECT 1 FROM DATATABLE a WHERE t.姓名=a.姓名 AND a.检查项目 LIKE '%彩超%' AND 状态<>'未检')