表:Othercharges
:
CODE NAME PRIMARYKEY GROUPBY JAN <- columns
WDS WOOD 1 'NULL' 1000 <- values
FDS FOOD 2 'NULL' 2000
WATER WATER 3 'NULL' 3000
TOT TOTAL 4 1,2
我希望得到GROUPBY
的值并将其放入IN
条款中。因为我想使用基于JAN
GROUPBY
得到PRIMARYKEY
的和
这是我的代码:
UPDATE othercharges
SET JAN = (SELECT SUM(jan)
FROM Othercharges
WHERE primarykey IN (groupby) AND code = code)
WHERE Groupby <> 'NULL'
使用上面的代码获取NULL
结果:
CODE NAME PRIMARYKEY GROUPBY JAN <- columns
WDS WOOD 1 'NULL' 1000 <- values
FDS FOOD 2 'NULL' 2000
WATER WATER 3 'NULL' 3000
TOT TOTAL 4 1,2 NULL <- my code result
假定的输出:
CODE NAME PRIMARYKEY GROUPBY JAN <- columns
WDS WOOD 1 'NULL' 1000 <- values
FDS FOOD 2 'NULL' 2000
WATER WATER 3 'NULL' 3000
TOT TOTAL 4 1,2 3000 <- the should be result
答案 0 :(得分:1)
您无法使用in
。值'1,2'
是一个长度为3的字符串,就像'abc'
一样。它不是两种元素。
您可以使用like
:
UPDATE othercharges
SET JAN = (SELECT SUM(oc2.jan)
FROM Othercharges oc2
WHERE ',' + oc2.groupby + ',' like '%' + cast(othercharges.primarykey as varchar(255)) + '%' and
oc2.acctcode = othercharges.acctcode
)
WHERE Groupby <> 'NULL';
此外,您需要表别名才能在acctcode
上进行比较。并且,您假设'NULL'
是一个字符串。如果是数据库值,则不要使用双引号,<>
是不合适的。
答案 1 :(得分:0)
Group By是String还是VarChar,因此有效的值等于&#34; 1,2&#34;实际上代码不起作用,因为 它需要像
&#34; IN(1,2)&#34;
不喜欢
&#34; IN(&#39; 1,2&#39;)&#34;
希望你理解