【发布时间】:2019-08-23 03:17:21
【问题描述】:
使用 Postgresql 9.4 版本。
我必须准备一份报告来比较整个环境中的表结构,即 QA、UAT、PROD。 我已将所有环境中的表结构加载到一个表中,并希望使用 SQL 交叉表查询生成报告。
我可以比较列名,但不能扩展到数据类型。
create table test_schema_rpt
(
env_name varchar2(100),
tbl_name varchar2(100),
col_nm varchar2(100),
data_type varchar2(100),
col_len integer
);
insert into test_schema_rpt values ('PROD','test_tbl','col1','character varying','100');
insert into test_schema_rpt values ('PROD','test_tbl','col2','character varying','200');
insert into test_schema_rpt values ('PROD','test_tbl','col3','character varying','300');
insert into test_schema_rpt values ('PROD','test_tbl','col4','integer',null);
insert into test_schema_rpt values ('UAT','test_tbl','col1','character varying','100');
insert into test_schema_rpt values ('UAT','test_tbl','col2','character varying','300');
insert into test_schema_rpt values ('UAT','test_tbl','col3','character','1');
insert into test_schema_rpt values ('UAT','test_tbl','col4','numeric',null);
insert into test_schema_rpt values ('UAT','test_tbl','col5','text',null);
insert into test_schema_rpt values ('QA','test_tbl','col1','character varying','100');
insert into test_schema_rpt values ('QA','test_tbl','col2','character varying','200');
insert into test_schema_rpt values ('QA','test_tbl','col3','character varying','300');
insert into test_schema_rpt values ('QA','test_tbl','col4','numeric',null);
insert into test_schema_rpt values ('QA','test_tbl','col5','text',null);
insert into test_schema_rpt values ('QA','test_tbl','col6','character varying','500');
使用此查询
select * from crosstab
(
'select tbl_name||''.''||col_nm::text table_nm , env_name, col_nm::text
from test_schema_rpt order by 1,2'
,'select distinct env_name from test_schema_rpt order by 1'
)
as tbl
(
table_nm text
,"QA" text
,"UAT" text
,"PROD" text
);
请查看预期结果集图片
【问题讨论】:
-
此站点可以帮助格式化数据/输出,因此您不需要图像:ozh.github.io/ascii-tables。
标签: sql postgresql pivot crosstab