SQL SELECT Sum子查询返回NULL
问题描述:
我有一列包含项目的连接列表。这些组件中的每一个都代表我从不同的表(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的总和场“项目数量”
答
仅仅因为你有一个字符串'1,2'
并不意味着那些事情是平等的。
CID IN ('1,2') <> CID IN (1,2)
你必须字符串像这样的东西
'tblSku分成数行 - 物品字段包含值1,2(在相同的字段)'这是否意味着有1项纪录并且该记录在“Items”字段中具有值“1,2”?如果是这样,那么你的问题是:'IN'不能将逗号分隔的字符串识别为值列表;它只是一个单一的字符串值。 –
对。我试图改变它,所以1,2将读为'1','2',但我仍然得到NULL。 – BrettKB
@BrettKB替换不起作用。检查我的答案,看看你如何将字符串拆分成行 –