MS SQL如何在不知道特定值的情况下取出一些唯一行

时间:2018-09-19 14:25:17

标签: sql sql-server

我有一个Table1,它与大学课程有关,员工可以运行它们,它看起来像这样:

enter image description here

它建立在少量联接上,并按StudySemester,SchoolSubjectId,EmployeeId分组。 StudySemester实际上是一个ID,例如,它是指信息学的第一年。 我想取出一些数据,想要得到这样的东西:

enter image description here

只有少数几个可用员工中的一个被分配到特定课程,而我希望它是随机完成的。也就是说,员工13、15、17可以教ePhs,StudySemester = 1000,但是应该选择一个-例如,员工15,但也可以是13或17,都没关系。 我不知道这些确切的值,这就是为什么我不能写…WHERE EmployeeId = 15的原因。

抱歉,如果我的帖子不够清楚,我是第一次来这里。 预先感谢!

1 个答案:

答案 0 :(得分:2)

您可以将row_number()函数与newid()一起使用:

select t.*
from (select t.*, row_number() over (partition by CourseSchoolSubjectId, StudySemester order by newid()) as seq
      from table t
     )
where seq = 1;