SQL SELECT Sum子查询返回NULL

时间:2015-11-06 22:11:04

标签: sql sql-server

我有一个包含连续项目列表的列。这些组件中的每一个都代表一个来自不同表(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'项目数量'

1 个答案:

答案 0 :(得分:1)

只是因为你有一个字符串'1,2'

并不意味着那些事情是平等的。

 CID IN ('1,2') <> CID IN (1,2)

你必须将字符串分成若干行

Turning a Comma Separated string into individual rows