Sql server Sql Server双子查询
我有一张桌子,有点像一张历史悠久的桌子。。。所以我有这样的数据 最终日期 1 10 20090209 2 14 20090304 1 12 20090304 3 54 20080508 4 42 20090510 ... ... .... 我需要根据每个idA的最新最终日期检索numberMov,所以我使用这个 从select idA中选择a.numberMov,从表1中选择maxfinalDate maxDate按idA分组为b内部联接表1 a在a.idA=b.idA和a.finalDate=b.maxDate上 现在我有另一个类似这样的问题 从n个表中选择m个字段,其中n5.numberMov在此处插入第一个查询 我觉得有更好的解决方案,但想不出任何解决方案,我真的不喜欢有两个子查询Sql server Sql Server双子查询,sql-server,subquery,Sql Server,Subquery,我有一张桌子,有点像一张历史悠久的桌子。。。所以我有这样的数据 最终日期 1 10 20090209 2 14 20090304 1 12 20090304 3 54 20080508 4 42 20090510 ... ... .... 我需要根据每个idA的最新最终日期检索numberMov,所以我使用这个 从select idA中选择a.numb
有什么建议吗?您没有说是哪个版本的SQL server,但这将在SQL 2005中起作用+
;WITH rankCTE
AS
(
SELECT idA
,numberMov
,FinalDate
,ROW_NUMBER() OVER (PARTITION BY idA
ORDER BY FinalDate DESC
) AS rn
FROM table1
)
,latestCTE
AS
(
SELECT idA
,numberMov
,FinalDate
FROM rankCTE
WHERE rn = 1
)
SELECT m fields
FROM n tables
WHERE n5.numberMov IN (SELECT numberMov FROM latestCTE)
没有足够的信息来自己测试它,但类似的东西可能会起作用
select m fields
from a inner join
(select numberMov,
max(FinalDate) as maxDate
from a
group by numberMov) b
on a.numberMov = b.numberMov
and a.FinalDate = b.maxDate inner join
n tables on a.numberMov = n.numberMov