我有一個以下查詢來更新銷售主數據庫主庫存。它在銷售表具有相同的prd_code時顯示錯誤。我正在使用發票號碼作爲條件,但它從銷售主數據中獲取所有記錄。我的INVOICE_NO條件在此處不起作用。子查詢返回了超過1個值。這是不允許的,當子查詢跟隨=,!=,<, <= , >,> =在SQL Server 2012中
DECLARE @LoopCounter INT = 1, @MaxCounts INT = (select distinct Count(prd_code) from SALES_D_ORG where [email protected]_NO)
WHILE(@LoopCounter <= @MaxCounts)
BEGIN
update prd_stock set AVAILABLE_STOCK=((select AVAILABLE_STOCK from prd_stock where PRD_CODE=
(Select PRD_CODE From
(Select Row_Number() Over (Order By AUTO_NO) As RowNum, * From SALES_D_ORG Where [email protected]_NO) t2
Where RowNum = @LoopCounter))-(select qty from SALES_D_ORG where PRD_CODE=
(Select PRD_CODE From
(Select Row_Number() Over (Order By AUTO_NO) As RowNum, * From SALES_D_ORG Where [email protected]_NO) t2
Where RowNum = @LoopCounter))) where PRD_CODE=(Select PRD_CODE From
(Select Row_Number() Over (Order By AUTO_NO) As RowNum, * From SALES_D_ORG Where [email protected]_NO) t2
Where RowNum = @LoopCounter)
SET @LoopCounter = @LoopCounter + 1
END
子查詢在查詢中的某個位置返回多個值,但這沒有意義。錯誤信息不能比這更清楚。 –
你的子查詢會返回更多的1行,所以如果你只需要一個行表單子查詢,你應該限制結果,否則你需要更多的行insetad od =你應該使用IN – scaisEdge
謝謝Tim Biegeleisen和scaisEdge。我已經修改我的代碼作爲你的建議。現在我的代碼工作正常,因爲我expect.This將如下所示 –