通常我会这样做
select top (1) * from table where id active = '1' and doc_type_id = '404'
获取最新一行。
但是我使用IN来取回结果。加上一个加入。
select t1.*
from table1 t1 left join table2 t2 on (t1.propid = t2.propid)
where t2.caseid in ('100','101') and t1.active = '1' and b.doc_type_id = '404'
此查询返回文档。但是,有多个相同类型的文档。 如果每个人都有10个文档,我只需要最新的文档。
我想从数据库中只检索每个最新的1个文档。
我希望自己解释一下:)
答案 0 :(得分:0)
这是窗口功能的理想方案。它们正是您所需要的。请查看over
关键字。
答案 1 :(得分:0)
如果您没有看到要使用的返回类型,则需要使用GROUP BY
和/或MAX
。如果这无法解决您的问题,请您发布样本数据集以及您期望的内容吗?
您甚至可以使用partitioning和/或ROW_NUMBER()
基于评论的更新
WITH myCTE
AS
(
SELECT t1.*,
ROW_NUMBER() OVER (PARTITION BY t2.caseid ORDER BY LastSavedDate DESC) AS RowNumber
FROM table1 t1
LEFT JOIN table2 t2
ON t1.propid = t2.propid
WHERE t2.caseid in ('100','101')
AND t1.active = '1' AND b.doc_type_id = '404'
)
SELECT *
FROM myCTE
WHERE RowNumber = 1;
根据您的意见,这可能适合您