如何基于同表字段创建视图?SQL列转行需求实现咨询
实现多列转行并创建视图
要得到需求中的视图,我们可以通过UNION ALL将tbl表的col1、col2列数据转为行结构,同时过滤NULL值,最终创建目标视图。
创建视图的SQL语句
CREATE VIEW out AS SELECT emp, col1 AS col FROM tbl WHERE col1 IS NOT NULL UNION ALL SELECT emp, col2 AS col FROM tbl WHERE col2 IS NOT NULL;
逻辑说明
- 第一个查询:提取
emp和非空的col1数据,将col1重命名为统一的col列 - 第二个查询:提取
emp和非空的col2数据,同样将col2重命名为col - 用
UNION ALL合并两个查询结果(若需自动去重可替换为UNION),最终过滤掉所有含NULL的行
验证结果
查询该视图会得到符合要求的结果:
┌─────────┬─────────┐ │ emp │ col │ │ varchar │ varchar │ ├─────────┼─────────┤ │ one │ A │ │ one │ B │ │ two │ B │ │ three │ D │ └─────────┴─────────┘
内容的提问来源于stack exchange,提问作者Jayendra Parmar
相关产品推荐
相关产品推荐

