提供されたクエリでは、ウィンドウ機能がDENSE_RANKではありません。あなたのデータ構造に精通しているわけではありませんが、私はあなたのクエリが各産業IDのDateの最大値を見つけることを試みていると思います、はい?ランキング関数を使用するために上記のクエリを書き直すと、私はそれを共通のテーブル式として記述します。
;
WITH RANKED AS
(
SELECT
II.*
-- RANK would serve just as well in this scenario
, DENSE_RANK() OVER (PARTITION BY II.id ORDER BY II.Date desc) AS most_recent
FROM Industries II
WHERE
II.Date <= '22 June 2011'
)
, MOST_RECENT AS
(
-- This query restricts it to the most recent row by id
SELECT
R.*
FROM
RANKED R
WHERE
R.most_recent = 1
)
SELECT
*
FROM
MOST_RECENT MR
INNER JOIN
#ii_t i
ON i.id = MR.id
また、業績の問題に取り組むためには、インダストリーがどのように構成されているかを調べる必要があります。その表には索引が存在しない場合があり、存在する場合は、日付(降順)およびidフィールドをカバーしない可能性があります。上記のクエリの効率を向上させるには、RANKEDセクションのすべてを取り戻さないでください。私はあなたが必要とするフィールドがわからないので、それを行いましたが、明らかに戻ってくる必要が少ないほど、エンジンを効率的に検索することができます。
私はSQL Serverを使用しています。 – jwe330