SQL如何将invoice date week id列的W11/W12/W13移动到新列last3weeks
实现方案
分两种常用场景提供对应SQL:
场景1:仅查询时生成临时last3weeks列,不修改原表结构
适合只需要查看结果、不需要改动原有表数据的场景:
SELECT *, CASE WHEN `invoice date week id` IN ('W11', 'W12', 'W13') THEN `invoice date week id` ELSE NULL END AS last3weeks FROM 你的实际表名;
说明:不符合条件的行last3weeks会返回空值NULL,如果你需要显示空白字符串,把ELSE NULL替换为ELSE ''即可。如果你的数据库对带空格的字段名标识规则不同,把字段名的反引号替换为对应符号即可(SQL Server用方括号[]、PostgreSQL用双引号"")。
场景2:在原表新增永久last3weeks列并填充数据
操作前建议先备份原表数据避免误操作:
- 第一步:新增
last3weeks字段
-- 字段类型和长度保持和`invoice date week id`一致即可,示例为varchar(10) ALTER TABLE 你的实际表名 ADD COLUMN last3weeks VARCHAR(10);
- 第二步:批量填充符合条件的数据
UPDATE 你的实际表名 SET last3weeks = `invoice date week id` WHERE `invoice date week id` IN ('W11', 'W12', 'W13');
内容的提问来源于stack exchange,提问作者barrie abdul
相关产品推荐
相关产品推荐

