我有一个包含连续项目列表的列。这些组件中的每一个都代表一个来自不同表(tblComponents)的id。我试图使用每个项目(在我的子查询中使用WHERE IN)来查找每个项目的每个组件的数量:
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 IN中的值:
'''' + REPLACE(s.Items, ',', ''', ''') + ''''
它仍然返回一个空值。
SUM()返回一个空值。
样品:
tblSku - Items字段包含值1,2(在同一字段中)
tblComponent CID 1包含qty为2,CID 2包含qty为3.
在这种情况下,我想显示5作为字段的SUM'项目数量'
答案 0 :(得分:1)
只是因为你有一个字符串'1,2'
并不意味着那些事情是平等的。
CID IN ('1,2') <> CID IN (1,2)
你必须将字符串分成若干行