sql - SQL server - 根据其他列的值更新一列
解决方案
如果你的列数是固定的,那么你可以使用一个CASE
语句。
样本数据
create table data
(
A nvarchar(1),
B nvarchar(1),
C nvarchar(1),
D nvarchar(1),
E nvarchar(10)
);
insert into data (A, B, C, D) values
('Y', 'N', 'Y', 'Y'),
('N', 'N', 'N', 'Y'),
('N', 'Y', 'Y', 'N'),
('Y', 'Y', 'Y', 'N');
解决方案
update d
set d.E = substring(
case d.A when 'Y' then ',A' else '' end
+ case d.B when 'Y' then ',B' else '' end
+ case d.C when 'Y' then ',C' else '' end
+ case d.D when 'Y' then ',D' else '' end,
2, 100)
from data d;
结果
select * from data;
A B C D E
--- --- --- --- -------
Y N Y Y A,C,D
N N N Y D
N Y Y N B,C
Y Y Y N A,B,C
推荐阅读
- python - 从 django urls 错误运行的 websockets:RuntimeError:线程“Dummy-1”中没有当前事件循环
- java - com.fasterxml.jackson.databind.JsonMappingException:由于 Spring Boot 应用程序中的输入结束,没有要映射的内容
- c# - 从 ViewModel 访问附加的属性集合
- elasticsearch - 如何在 Elasticsearch 中部分删除索引数据
- ruby-on-rails - `has_many through:` 关系的问题
- python - 我可以使用部分实现来构建测试期望吗?
- python - 我需要使用函数“reduce”找到数字的阶乘
- git - 如何对私有的jelastic环境进行版本控制
- c# - 将 JSON 转换为字符串 c# 时使用 JsonConvert.DeserializeObject 出错
- javascript - 如何通过ajax发送错误/成功消息而不点击表单中的提交按钮(如果没有表单)laravel?