我必须在桌子上做一个自我加入。我正在尝试返回几列的列表,以查看在同一天(MM/DD/YYYY)执行了多少每种类型的药物测试,其中至少完成了两项测试,其中至少一项导致了'UN'的结果代码。
我正在加入其他表格以获取如下信息。问题是我不太明白如何排除那些只有一个结果行的人,他们当天确实有一个“联合国”结果,但当天没有任何其他测试。
查询结果(列)
县、DrugTestID、ID、名称、CollectionDate、DrugTestType、结果、计数(DrugTestType)
我有几行 ID 12345 是正确的。但是 ID 12346 是单行,其中显示他们的行结果为 count (1)。他们在这一天得到了“联合国”的结果,但那天他们没有进行任何其他测试。我想排除这个。
我尝试了以下查询
选择
c.desc 为“县”,
dt.pid 作为“PID”,
dt.id 作为 'DrugTestID',
p.id 作为“ID”,
bio.FullName 为“参与者”,
转换(varchar,dt.CollectionDate,101)为'CollectionDate',
dtt.desc 作为“药物测试类型”,
dt.result 作为结果,
计数(dt.dru_drug_test_type)作为“测试类型计数”
从
dbo.Test as dt with (nolock)
在 dt.pid = h.id 上以 h 身份加入 dbo.History
在 h.pid = p.id 上以 p 身份加入 dbo.Participant
在 bio.id = p.id 上加入 BioData 作为 bio
在 p.CountyCode = c.code 上加入 County as c with (nolock)
在 dt.DrugTestType = dtt.code 上加入 DrugTestType 作为 dtt 与 (nolock)
内部联接
(
选择不同的
dt2.pid,
CONVERT(varchar, dt2.CollectionDate, 101) as 'CollectionDate'
从
dbo.DrugTest as dt2 with (nolock)
在 dt2.pid = h2.id 上加入 dbo.History 作为 h2
在 h2.pid = p2.id 上以 p2 身份加入 dbo.Participant
在哪里
dt2.result = '联合国'
和 '11-01-2011' 和 '10-31-2012' 之间的 dt2.CollectionDate
和 p2.DrugCourtType = 'AD'
) 作为派生的
在 dt.pid = 派生.pid
和转换(varchar,dt.CollectionDate,101)=转换(varchar,派生。CollectionDate,101)
通过...分组
c.desc、dt.pid、p.id、dt.id、bio.fullname、dt.CollectionDate、dtt.desc、dt.result
订购
c.desc ASC、参与者 ASC、dt.CollectionDate ASC