根据id检索唯一行

时间:2018-02-22 15:44:43

标签: sql sql-server

我有两张桌子:

报告

ReportId CreatedDate
   1     2018-01-12
   2     2018-02-12
   3     2018-03-12

ReportSpecialty

SpecialtyId ReportId IsPrimarySpecialty
     1          1           1
     2          2           1
     3          3           1
     1          2           0
     1          3           0

我正在尝试编写一个查询,它将检索我发布的最后10个报告。但是,我需要从每个专业获得1份报告。假设有100个专业,我可以作为参数传递任意数量的专业,10,20,5,2等...

我正试图找出一种方法,如果我发送所有专业,它将根据创建的最后日期向我发送最后10个报告,但它不会给我2篇来自同一专业的文章。如果我发送10个专业,那么我将获得1个。如果我发送它5,那么我将得到2。如果我发送它3然后我会得到4和其他两个中的4个。

我可能需要为此编写多个查询,我试图看看是否有办法在SQL方面做到这一点?如果没有,那么我将如何分解为多个查询以获得我想要的结果?

我试过的是这个,但是我得到了多个具有相同专业的报告:

SELECT TOP 10  r.ReportId, rs.SpecialtyId, r.CreatedDate
FROM Report r
INNER JOIN ReportSpecialty rs ON r.ReportId = rs.ReportId AND rs.IsPrimarySpecialty = 1
GROUP BY rs.SpecialtyId, r.AceReportid, r.CreatedDate
ORDER BY r.CreatedDate DESC

1 个答案:

答案 0 :(得分:0)

 rn speciality_id
  1     1
  1     2
  1     3
  2     1
  2     2
  2     3
  3     1
  3     2
  3     3

row_number将为每个专业创建一个ID,所以如果你通过3个专业,你将得到类似的东西。

  { props.checked ? <Icon name="checkmarkBlue" small /> : "" }