Sql server 2008 使用;或;对;及;用于获取特定结果的运算符

Sql server 2008 使用;或;对;及;用于获取特定结果的运算符,sql-server-2008,Sql Server 2008,我会尽力在这里解释我的问题。我运行了一个查询,用于检查在districtIDNum=5中完成courseIDNum=11或courseIDNum=12的人,但不能同时完成这两个courseIDNum。以下是脚本: SELECT max(p.FirstName), max(p.LastName), max(p.Email), max(s.CourseIDNum) FROM People p INNER JOIN Registration r on p.PeopleID =

我会尽力在这里解释我的问题。我运行了一个查询,用于检查在
districtIDNum=5
中完成
courseIDNum=11
courseIDNum=12
的人,但不能同时完成这两个courseIDNum。以下是脚本:

SELECT max(p.FirstName),
   max(p.LastName),
   max(p.Email),
   max(s.CourseIDNum)
FROM People p
INNER JOIN Registration r
   on p.PeopleID = r.PeopleIdNum
INNER JOIN Section s
   on r.SectionIDNum = s.SectionID
INNER JOIN School sc
   on p.SchoolIDNum = sc.SchoolID
WHERE s.CourseIDNum IN (11, 12)
AND sc.DistrictIDNum = 5
AND r.Completed='Y'
group by p.PeopleID
having count(distinct s.CourseIDNum)=1
现在,我的任务是再次检索
districtIDNum=5
地区的人的数据,但这一次是检查他们是否参加了所有3门课程,3门课程中的哪2门课程名称相同,但这2门课程都有2个不同的课程名称。因此,我编辑了下面显示的
WHERE
部分。返回的结果只有完成
12
177
的人,没有
11
68
128
的结果。然后,我用操作符替换了,并返回0行。非常感谢您在这方面的任何帮助

WHERE s.CourseIDNum IN (11, 12)
   OR s.CourseIDNum IN (68, 177)
   OR s.CourseIDNum=128
   AND sc.DistrictIDNum = 5
   AND r.Completed='Y'
group by p.PeopleID
having count(distinct s.CourseIDNum)=3
以下是相关表格:

peopleIDFirstNameLastNameEmailschoolIDNum
1EstherBb@hotmail.com33
2TommyLl@hotmail.com55
3LizMm@hotmail.com90

registrationIDpeopleIDNumsectionIDNum
22140
23241
243132
25178
26252
27163

SectionIDCourseInum
4011
4112
5268
63128
78177
132195

courseIDcoursename
11健康(旧版)
12健康(新)
68PE(旧版)
128键盘输入法
177PE(新)
195计算

SchoolIDDistrictionIDnum
335
555

9012

且优先级高于或。所以我认为你应该说
在哪里(x或y)和z
,但我不知道你在寻找什么结果。在这种情况下,为什么不在(11,12,68177128)中加入
CourseIDNum?@亚伦:我在(11,12,68177128)
中将它改为
CourseIDNum,它确实给了我完成这些课程的人。唯一的问题是它给了我其他地区,但我只需要来自
districtIDNum=5
的人。请帮忙,谢谢!:)请在您的帖子中包含示例数据、您现在获得的输出以及您希望从该数据中获得的输出,以便我们能够清楚地了解您请求帮助获取的内容。谢谢。是的,样本数据和期望的结果比“这是我尝试的查询,但它不起作用”有用10000%左右。嗯,我道歉,我不确定我在想什么。。。