SQLServer通过跨两个字段选择查询组
这可能很简单,但我就是不明白。我不熟悉GROUPBYSQL查询,但对sql查询有基本的了解 我有一个简单的表,如“主题”:SQLServer通过跨两个字段选择查询组,sql,sql-server,group-by,Sql,Sql Server,Group By,这可能很简单,但我就是不明白。我不熟悉GROUPBYSQL查询,但对sql查询有基本的了解 我有一个简单的表,如“主题”: Student | Interviewer | Topic ========================================== Chuck | Susan | Project Management Jill | Jack | Microsoft Word Chuck | Jack | Microsoft
Student | Interviewer | Topic
==========================================
Chuck | Susan | Project Management
Jill | Jack | Microsoft Word
Chuck | Jack | Microsoft Word
Bobby | Jane | Project Management
Jill | Jack | Python Scripting
这是示例数据
对于每次面试,每个主题都会添加一行。有些学生接受了不止一位面试官的面试,有些面试只涉及一个主题,而另一些则涉及多个主题
我正在尝试编写一个查询,为那些只接受过一个人面试但被问及多个主题的学生返回学生和面试官对
有了上面的示例数据,我只需要返回一行:(吉尔,杰克)
我尝试了GROUPBY和sql查询的各种组合,但都没有返回我想要的结果。我想我在分组查询时遗漏了一些东西。我读过多个关于GroupBy和have的网站,也搜索过其他堆栈溢出问题,但都没有点击 您可以通过
分组方式
和拥有
来实现这一点
select student,max(interviewer) --or min(interviewer) as there will only be one interviewer
from tbl
group by student
having count(distinct interviewer) = 1 and count(topic) > 1
我只想指出,
count(distinct)
可能很昂贵。另一种选择是:
select t.student, max(t.interviewer)
from tbl t
group by t.student
having min(interviewer) = max(interviewer) and
min(topic) <> max(topic);
选择t.student,max(t.Conference)
来自tbl t
t学生分组
最低(面试官)=最高(面试官)和
最小(主题)最大(主题);
请输入样本数据和预期结果。@vkp添加了数据和结果谢谢!我错过了“max()”和“distinct”。