我編寫了以下腳本,該腳本在使用CROSS APPLY參數的SQL Server 2008開發人員數據庫中正常工作,但它不適用於擁有SQL Server 2000數據庫的客戶端不想更改SSMS中的兼容性設置。需要替代使用SQL Server 2000使用交叉應用
有人可以建議一種方法來轉換我的腳本,以便不使用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或數據樣本,請**在文本編輯器中突出顯示這些行,然後單擊編輯器工具欄上的「代碼示例」按鈕(「{}」)格式和語法突出顯示它! –
哦,你真的不應該重用你給派生表的別名,我在同一個查詢中計數了三個不同的'fc2'表 – Lamak