【发布时间】:2021-09-19 07:41:29
【问题描述】:
我有一个包含 4 列的表格:科学、数学、英语和课程。 科学、数学和英语是布尔值,类是 nvarchar。
如果 Science 为 1,则 Classes 应附加分号和字符串 001。 如果 Math 为 1,则 Classes 应附加分号和字符串 002。 如果 English 为 1,则 Classes 应附加分号和字符串 003。
因此,如果 Science 为 1,Math 为 0,English 为 1,则 Classes 为 001;003。 或者,如果科学为 0,数学为 1,英语为 0,则 Classes 为 003。
我最初尝试过:
Update Table
SET Classes = CASE
WHEN Science = 1 THEN concat(Classes, ';001')
WHEN Math = 1 THEN concat(Classes, ';002')
WHEN English = 1 THEN concat(Classes, ';003')
END
但这不会起作用,因为一旦 CASE 找到一个真实的陈述,它就会更新它并且不会检查其他条件。任何人都可以帮助弄清楚如何进行这种连接吗?谢谢!
【问题讨论】:
-
提问时,您需要提供minimal reproducible example: (1) DDL 和样本数据填充,即 CREATE 表和 INSERT T-SQL 语句。 (2) 你需要做什么,即逻辑和你的代码尝试在 T-SQL 中实现它。 (3) 期望的输出,基于上面#1 中的样本数据。 (4) 您的 SQL Server 版本 (SELECT @@version;)。
-
我会将其更改为计算列
标签: sql sql-server sql-update concatenation