在 SQL SERVER 的 UPDATE 语句中使用 CASE to select 列进行 SET
using CASE to select column for SET in UPDATE statement IN SQL SERVER
我要执行下面的语句。是否可以 select 使用 CASE 更新哪一列?
UPDATE TABVAR CASE
WHEN M BETWEEN 0 AND 6 THEN SET M0_TO_6 = M
WHEN M BETWEEN 7 AND 18 THEN SET M7_TO_18 = M
WHEN M BETWEEN 19 AND 54 THEN SET M19_TO_54 = M
WHEN M > 54 THEN SET MABOVE54 = M
END
不是那样,但你可以像这样做基本相同的事情:
UPDATE TABVAR
set
M0_TO_6 = CASE WHEN M BETWEEN 0 AND 6 THEN M else M0_TO_6 end,
M7_TO_18 = CASE WHEN M BETWEEN 7 AND 18 THEN M else M7_TO_18 END,
...
通过这种方式,您可以将值 M 更新到列中,或者更新其中已存在的值。
你不能像那样使用 case
表达式,只能对 return 一个 (l-) 值使用。但是,您可以使用每列的 case
表达式来模拟这种行为:
UPDATE tabvar
SET
m0_to_6 = CASE WHEN m BETWEEN 0 AND 6 THEN m ELSE m0_to_6 END,
m7_to_18 = CASE WHEN m BETWEEN 7 AND 18 THEN m ELSE m7_to_18 END,
m19_to_54 = CASE WHEN m BETWEEN 19 AND 54 THEN m ELSE m19_to_54 END,
mabove54 = CASE WHEN m > 54 THEN m ELSE mabove54 END
我认为您需要这种类型的查询:
UPDATE TABVAR
SET M0_TO_6 = CASE WHEN M BETWEEN 0 AND 6 THEN M ELSE M0_TO_6 END,
M7_TO_18 = CASE WHEN M BETWEEN 7 AND 18 THEN M ELSE M7_TO_18 END,
M19_TO_54 = CASE WHEN M BETWEEN 19 AND 54 THEN M ELSE M19_TO_54 END,
MABOVE54 = CASE WHEN M > 54 THEN M ELSE MABOVE54 END
我要执行下面的语句。是否可以 select 使用 CASE 更新哪一列?
UPDATE TABVAR CASE
WHEN M BETWEEN 0 AND 6 THEN SET M0_TO_6 = M
WHEN M BETWEEN 7 AND 18 THEN SET M7_TO_18 = M
WHEN M BETWEEN 19 AND 54 THEN SET M19_TO_54 = M
WHEN M > 54 THEN SET MABOVE54 = M
END
不是那样,但你可以像这样做基本相同的事情:
UPDATE TABVAR
set
M0_TO_6 = CASE WHEN M BETWEEN 0 AND 6 THEN M else M0_TO_6 end,
M7_TO_18 = CASE WHEN M BETWEEN 7 AND 18 THEN M else M7_TO_18 END,
...
通过这种方式,您可以将值 M 更新到列中,或者更新其中已存在的值。
你不能像那样使用 case
表达式,只能对 return 一个 (l-) 值使用。但是,您可以使用每列的 case
表达式来模拟这种行为:
UPDATE tabvar
SET
m0_to_6 = CASE WHEN m BETWEEN 0 AND 6 THEN m ELSE m0_to_6 END,
m7_to_18 = CASE WHEN m BETWEEN 7 AND 18 THEN m ELSE m7_to_18 END,
m19_to_54 = CASE WHEN m BETWEEN 19 AND 54 THEN m ELSE m19_to_54 END,
mabove54 = CASE WHEN m > 54 THEN m ELSE mabove54 END
我认为您需要这种类型的查询:
UPDATE TABVAR
SET M0_TO_6 = CASE WHEN M BETWEEN 0 AND 6 THEN M ELSE M0_TO_6 END,
M7_TO_18 = CASE WHEN M BETWEEN 7 AND 18 THEN M ELSE M7_TO_18 END,
M19_TO_54 = CASE WHEN M BETWEEN 19 AND 54 THEN M ELSE M19_TO_54 END,
MABOVE54 = CASE WHEN M > 54 THEN M ELSE MABOVE54 END