2015-06-24 87 views
0

我寫了下面的查詢表中的(PartsPricing)來更新價格:更新查詢錯誤

Update PartsPricing 
set ppPrice = CEILING((select PP.ppPrice from 
       #tmp_PartstoUpdate TPU join PartsPricing PP 
       on TPU.ppPartNumber = PP.ppPartNumber 
       where PP.ppConditionID = 9 and PP.ppDeleted = 0)*.5) 
where ppID in (select ppID from #tmp_PartstoUpdate) 

當我運行查詢,我得到以下錯誤:

Msg 512, Level 16, State 1, Line 1 
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression. 
The statement has been terminated. 

我曾嘗試我可以在網上找到所有可能的解決方案,而且他們中沒有一個似乎能夠工作任何幫助將不勝感激。

回答

1

試試這個,這應該基本上做同樣的:

Update PP 
set ppPrice = CEILING(PP.ppPrice * 0.5) 
FROM PartsPricing PP 
INNER JOIN #tmp_PartstoUpdate TPU 
     ON TPU.ppPartNumber = PP.ppPartNumber 
where PP.ppConditionID = 9 and PP.ppDeleted = 0 

您的問題是,你的子查詢返回多行,這會導致SQL Server中止。他無法將多行與一個值相乘,並將其分配給另一個值(除非您使用聚合)。

+0

它工作。謝謝! – jmClassic

+0

如果這是您的問題的解決方案,您可以將其標記爲您尋找相同問題的其他人的答案。 :-) – Ionic

+0

我修改了上面的查詢來更新使用價格的使用條件,如下所示: – jmClassic