我有两张桌子:
报告
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
答案 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 /> : "" }