我想加入一個包含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