sql - postgresql中的动态列别名
问题描述
我正在寻找一种可以将列别名设置为动态 DDL 的方法
CREATE TABLE MATERIAL
(
ATTRIBUTE_NAME VARCHAR(20),
CURR_VAL VARCHAR(20),
NEW_VAL VARCHAR(20) );
INSERT INTO PRODUCTS VALUES ('MATERIAL DIVISION','AAAA','KKKK');
CREATE TABLE COLUMNS
(
ATTRIBUTE_NAME VARCHAR(20),
COLUMN_NAME VARCHAR(20) );
INSERT INTO COLUMNS VALUES ('MATERIAL DIVISION','ZPAA');
现在
SELECT NEW_VAL FROM MATERIAL;
会导致
NEW_VAL
________
KKKK
和
SELECT COLUMN_NAME FROM MATERIAL A LEFT JOIN COLUMNS B ON (A.ATTRIBUTE_NAME = B.ATTRIBUTE_NAME);
结果是
COLUMN_NAME
___________
ZPAA
我想用 ZPAA 替换 NEW_VAL。谁能帮我得到这个结果
期待结果
ZPAA
_____
KKKK
解决方案
我的解决方案是:
创建临时表材料 ( ATTRIBUTE_NAME VARCHAR(20), CURR_VAL VARCHAR(20), NEW_VAL VARCHAR(20) ); INSERT INTO MATERIAL VALUES ('MATERIAL DIVISION','AAAA','KKKK'); 创建临时表列 ( ATTRIBUTE_NAME VARCHAR(20), COLUMN_NAME VARCHAR(20) ); 插入列值('材料划分','ZPAA'); 犯罪; 开始; SELECT retrefcur(FORMAT($query$ SELECT NEW_VAL AS %s FROM MATERIAL A LEFT JOIN COLUMNS B ON (A.ATTRIBUTE_NAME = B.ATTRIBUTE_NAME) $query$,(SELECT COLUMN_NAME 从材料 A 左连接列 B ON (A.ATTRIBUTE_NAME = B.ATTRIBUTE_NAME))),'cur1'); 获取 cur1 中的所有内容; 犯罪;
我在 PostgreSql 10.13 中对此进行了探讨
推荐阅读
- ios - 上传到 AWS 服务器上传失败?
- javascript - 以 0. 开头并以 ] 结尾的字符串的正则表达式?
- python-3.x - AWS EC2 可以异步创建实例吗?
- c# - Outlook,在约会中存储变量的最佳方式
- react-native - 如何在本机反应中在堆栈导航器和抽屉导航器之间传递数据
- c# - 将值从 SQL 数据库存储到变量
- ios - 无法使用类型为“(范围
)' - wordpress - 当我使用 npx 命令时出现此错误错误:EPERM:不允许操作,
- image - 如何使用干预图像 laravel 将 webp 图像转换为 jpeg 或 png
- c# - 无法编辑 DotNetNuke 源文件