gpt4 book ai didi

sql - 如何使用列值到 "IN"子句? SQL服务器

转载 作者:行者123 更新时间:2023-12-04 18:03:07 26 4
gpt4 key购买 nike

表: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的SUM使用 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

最佳答案

您不能使用 in为了这。值 '1,2'是一个长度为三的字符串,就像 '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'是一个字符串。如果是数据库值,那就不要用双引号和 <>不合适。

关于sql - 如何使用列值到 "IN"子句? SQL服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31737483/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com