如何在“IN”子句中使用列值?SQL server
表:其他费用: 使用上面的代码会得到空结果: 假设输出:如何在“IN”子句中使用列值?SQL server,sql,sql-server-2008,Sql,Sql Server 2008,表:其他费用: 使用上面的代码会得到空结果: 假设输出: CODE NAME PRIMARYKEY GROUPBY JAN <- columns WDS WOOD 1 'NULL' 1000 <- values FDS FOOD 2 'NULL' 2000 WATER WATER 3
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
您不能为此使用中。值“1,2”是一个长度为3的字符串,与“abc”类似。这不是两个要素,某种程度上
您可以使用以下工具做您想做的事情:
此外,还需要表别名,以便在acctcode上进行比较。并且,假设“NULL”是一个字符串。如果是数据库值,则不要使用双引号,这是不合适的。是按is字符串或VarChar分组的,因此该值实际上等于1,2,因为 它需要像 在1,2 不像 在‘1,2’
希望您理解Gordon,我认为最好将条件更改为:WHERE'、“+oc2.groupby+”、“%”、“%”、“+castothercharges.primarykey as varchar255+”、“%”-即添加comas以防止在这种情况下出现不必要的值,”、10、“、比如“1”@Gordon linoff您给我的代码仍然会给出“NULL”结果。有什么建议吗?@ChadJimenezCalamba我认为groupby列中的值是“NULL”而不是NULL。如果是这样,您需要将groupby“NULL”的转义字符改为groupby“NULL”。您可以尝试类似groupby的方法,如“%”+primarykey+“%”。但我不确定这是个好主意。我理解你的意思,但我可以使用任何替代方法吗?创建另一个表,该表可以返回组列表,如从grouptable中选择组,其中key=primarykey。我希望你能理解。
UPDATE othercharges
SET JAN = (SELECT SUM(jan)
FROM Othercharges
WHERE primarykey IN (groupby) AND code = code)
WHERE Groupby <> '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
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';