2015-11-06 176 views
0

我有一列包含項目的連接列表。這些組件中的每一個都代表我從不同的表(tblComponents)獲得的一個id。我試圖使用各個項目(使用凡在我子查詢中)找到每個項目的每個組件的數量:SQL SELECT Sum子查詢返回NULL

SELECT s.title 'Product SKU' 
,s.price 'Item Price' 
,CASE WHEN (select SUM(c.qty) from tblComponents where CID IN (s.Items)) = 0 
    THEN 1 
    ELSE c.qty 
END 'Items Qty' 
FROM tblsku s JOIN tblcomponent c ON c.idtblcomponent = s.idtblcomponent 
JOIN tblgrade g ON g.idtblgrade = c.idtblgrade 
WHERE --etc... 

我試圖在WHERE中的值分開使用:

'''' + REPLACE(s.Items, ',', ''', ''') + '''' 

它仍然返回空值。

SUM()返回一個空值。

樣品:

tblSku - 物品字段包含值1,2(在相同的字段)

tblComponent CID 1包含的2數量,CID 2含有的3

數量在這種情況下我想顯示5的總和場「項目數量」

+0

'tblSku分成數行 - 物品字段包含值1,2(在相同的字段)'這是否意味着有1項紀錄並且該記錄在「Items」字段中具有值「1,2」?如果是這樣,那麼你的問題是:'IN'不能將逗號分隔的字符串識別爲值列表;它只是一個單一的字符串值。 –

+0

對。我試圖改變它,所以1,2將讀爲'1','2',但我仍然得到NULL。 – BrettKB

+0

@BrettKB替換不起作用。檢查我的答案,看看你如何將字符串拆分成行 –

回答