[英]Sub-query in a sub-query
我有下表:
+-------------+------------+----------+-----------+-----------+
| Patient No | Event Date | Exam Key | Event Key | Exam Code |
+-------------+------------+----------+-----------+-----------+
| 1 | 27/12/2015 | 4380 | 4792 | XHIPL |
| 1 | 27/12/2015 | 4379 | 4792 | XPELV |
| 2 | 11/02/2016 | 7006 | 2390 | XPELV |
| 3 | 17/11/2015 | 5785 | 3948 | XHIPR |
| 3 | 17/11/2015 | 5784 | 3948 | XPELV |
| 4 | 13/03/2016 | 2633 | 7792 | XPELV |
| 4 | 13/03/2016 | 2634 | 7792 | XHIPR |
| 5 | 06/05/2016 | 6188 | 9169 | XHIPL |
| 5 | 06/05/2016 | 6187 | 9169 | XPELV |
| 6 | 05/09/2016 | 3396 | 3809 | XHIPR |
| 6 | 05/09/2016 | 3397 | 3809 | XPELV |
| 7 | 22/02/2016 | 8337 | 3706 | XPELV |
| 7 | 22/02/2016 | 8336 | 3706 | XHIPL |
| 8 | 27/11/2015 | 9376 | 7063 | XPELV |
+-------------+------------+----------+-----------+-----------+
我想展示那些患有'XPELV'和'XHIPL'或'XPELV'和'XHIPR'的患者
這應該可以為您提供所需的結果:
SELECT T.*
FROM TABLE T
INNER JOIN TABLE TT ON T.[Patient No] = TT.[Patient No]
WHERE TT.[Exam Code] = 'XPELV'
AND EXISTS(SELECT 1
FROM TABLE T2
WHERE TT.[Patient No]=T2.[Patient No]
AND (T2.[Exam Code] = 'XHIPL'
OR
T2.[Exam Code] = 'XHIPR')
)
經過幾次測試后,這似乎是最有效的方法:
select
t.PatientNo,
t.EventDate,
t.ExamKey,
t.EventKey,
t.ExamCode
from #Temp as [t]
where t.ExamCode in ('XHIPL', 'XHIPR')
and t.PatientNo in (select t2.PatientNo from #Temp as [t2] where t2.ExamCode = 'XPELV')
我為你試了幾個CTE,上面的答案使用了EXISTS。 在比較計划時,這種方法略微(我的意思是吝嗇!)更有效率。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.