Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQLServer通过跨两个字段选择查询组_Sql_Sql Server_Group By - Fatal编程技术网

SQLServer通过跨两个字段选择查询组

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

这可能很简单,但我就是不明白。我不熟悉GROUPBYSQL查询,但对sql查询有基本的了解

我有一个简单的表,如“主题”:

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”。