我想加入一个包含WITH子句的子查询/派生表(WITH子句必须在ROW_NUMBER() = 1
上过滤)。在Teradata类似的情况下可以正常工作,但Teradata使用QUALIFY ROW_NUMBER() = 1
而不是WITH子句。SQL Server:加入包含WITH子句的派生表?
这是我在这次尝试加入:
-- want to join row with max StartDate on JobModelID
INNER JOIN (
WITH AllRuns AS (
SELECT *,
ROW_NUMBER() OVER (PARTITION BY JobModelID ORDER BY StartDate DESC) AS RowNumber
FROM Runs
)
SELECT * FROM AllRuns WHERE RowNumber = 1
) Runs
ON JobModels.JobModelID = Runs.JobModelID
我在做什么错?
任何想法这将是多少效率? – jnylen 2010-04-21 17:13:56
@jnylen,你有没有试图分析这个查询?执行计划,Profiler,客户统计? – 2010-04-21 17:30:41
@jnylen:我同意你的观点。我的经验法则:如果查询在合理的时间内恢复,那就没问题。如果不是,我开始寻找热点并尝试重构。我从来没有像上面显示的那样重构代码。 – bernie 2010-04-21 17:48:20