CROSS APPLYパラメータを使用してSQL Server 2008開発者データベースで正常に動作する次のスクリプトを作成しましたが、SQL Server 2000データベースを持つクライアントでは機能しません。 SSMSの互換性設定を変更する必要はありません。SQL Server 2000でCross Applyを使用する代用が必要
誰かがCROSS APPLYパラメータを使用しないように下のスクリプトを変換する方法を提案できますか?ありがとう!
DECLARE @Flag INT
SET @Flag = 1
WHILE (@Flag < (SELECT TOP 1 (COUNT(CUSTOMERPN)) AS COUNTCUST FROM FC_Nestle
GROUP BY CustomerPN
ORDER BY COUNTCUST DESC))
BEGIN
--UPDATE AFS_TOPRODUCE COUNTS
UPDATE FC_Nestle
SET AFS_ToProduce = CustReqQty - AFS_OH
--UPDATE SUBSEQUENT AFS_OH INVENTORY COUNTS
update FC_Nestle
set AFS_OH = - fc2.AFS_ToProduce
from FC_Nestle
CROSS APPLY
(
select fc2.AFS_ToProduce
from
(
select top 1
fc2.AFS_ToProduce
from FC_Nestle fc2
where fc2.ForecastID < FC_Nestle.ForecastID and fc2.CustomerPN = FC_Nestle.CustomerPN
order by fc2.ForecastID desc
) fc2
where fc2.AFS_ToProduce < 0
) fc2
where FC_Nestle.AFS_ToProduce > 0
SET @Flag = @Flag + 1
END
ようこそStackOverflow:コード、XML、またはデータサンプルを投稿する場合は、テキストエディタでこれらの行を強調表示し、エディタツールバーの[コードサンプル]ボタン( '{}')をクリックしてくださいフォーマットと構文はそれを強調する! –
ああ、あなたは本当にあなたの派生テーブルに与えるエイリアスを再利用すべきではありません、私は同じクエリで3つの異なる 'fc2'テーブルを数えます。 – Lamak