2017-04-17 49 views
0

我一直在檢查堆棧溢出幾個職位對這個錯誤,我也拿到了,而我試圖添加一個SQL查詢檢索列tblAR.ARID如下:如何解決錯誤:將值賦給變量的SELECT語句不能與數據檢索結合使用?

SELECT tblAR.ARID, 
@GP = (Sum(ard.Amount)) 
-(Sum((CASE WHEN MaterialNumber='REBATE' THEN [qty] 
      WHEN ard.Amount<0 THEN -1*ABS([qty]) 
      ELSE ABS([qty]) 
     END))) 
FROM 
tblMMMaterials mm 
INNER JOIN tblARDetail ard ON mm.MatID = ard.MatID 
INNER JOIN tblAR arh ON ard.ARID = arh.ARID 
WHERE [email protected] 

我才知道我不能在單個查詢中都做。所以,我分了查詢分爲兩個如下:

SELECT 
@GP = (Sum(ard.Amount)) 
-(Sum((CASE WHEN MaterialNumber='REBATE' THEN [qty] 
      WHEN ard.Amount<0 THEN -1*ABS([qty]) 
      ELSE ABS([qty]) 
     END))) 
FROM 
tblMMMaterials mm 
INNER JOIN tblARDetail ard ON mm.MatID = ard.MatID 
INNER JOIN tblAR arh ON ard.ARID = arh.ARID 
WHERE [email protected] 

select tblAR.ARID from tblAR 
WHERE [email protected] 

雖然沒有給我任何的錯誤,我沒有信心,如果這後面的SQL代碼是100%的理想選擇。換句話說,我想知道是否足以在第二個查詢中包含'WHERE'條件,即WHERE [email protected]。請幫忙

+0

這不一定是相同的,因爲'INNER JOIN's可以過濾或者取決於對這些表中的數據中的某些行相乘。如果你解釋你真正想做的事情會更好 – Lamak

+0

@Lamak:非常感謝回覆。實際上,我需要屬於'rundate'的ARID並滿足它爲'GP'所做的一切。我不確定我是否也需要包含這些內部連接。所以,我最終只包括條件。這給了我一堆ARID – toofaced

回答

0

不,他們不一樣,因爲你有JOIN參與查詢。您可以重複查詢雖然喜歡

SELECT 
@GP = (Sum(ard.Amount)) 
-(Sum((CASE WHEN MaterialNumber='REBATE' THEN [qty] 
      WHEN ard.Amount<0 THEN -1*ABS([qty]) 
      ELSE ABS([qty]) 
     END))) 
FROM 
tblMMMaterials mm 
INNER JOIN tblARDetail ard ON mm.MatID = ard.MatID 
INNER JOIN tblAR arh ON ard.ARID = arh.ARID 
WHERE [email protected]; 

SELECT tblAR.ARID 
FROM 
tblMMMaterials mm 
INNER JOIN tblARDetail ard ON mm.MatID = ard.MatID 
INNER JOIN tblAR arh ON ard.ARID = arh.ARID 
WHERE [email protected] 
相關問題