PostgreSql数据库-行转列函数crosstab

PG数据库行转列函数crosstab操作

原数据:

 

第一步:

对表数据空值进行处理(我这里是对空值填写字符串)

第二步:

执行CREATE EXTENSION tablefunc,如果不执行这个sql,会报错crosstab(unknown, unknown) does not exist,作用如下图:

第三步:

 

 

代码:

select * from 
crosstab('select id::varchar,json_key::varchar,json_values::varchar from pssf.key_values ORDER BY 1',
     'select  json_key::varchar from pssf.key_values ORDER BY 1')
as ct(
id varchar(50000),longitude varchar(50000),
MONITORTYPEMANY varchar(50000),
REVIEWUSER varchar(50000),
PRODUCTRISK varchar(50000),
ISLITTLE varchar(50000),
NEEDINSURENUMBER varchar(50000),
OTHER varchar(50000),
STATEMESSAGE varchar(50000),
DELETETIME varchar(50000),
wgs84_x varchar(50000),
RECORDOPINION varchar(50000),
ISARCHIVES varchar(50000),
SUPERVISEDEPTID varchar(50000),
STATEREASON varchar(50000),
MONITORTYPEDETAIL varchar(50000),
DELETEREASON varchar(50000),
RATEPAYERSTATE varchar(50000),
ACREAGE varchar(50000),
REGISTERMONTY varchar(50000),
SPECITYENTP varchar(50000),
ENTPKIND varchar(50000),
GRADETIMEBEGIN varchar(50000),
RECORDDATE varchar(50000),
INSURENUMBER varchar(50000),
UNITTEL varchar(50000),
PUREWORK varchar(50000),
MAINCRAFT varchar(50000),
GRADECHECKDATE varchar(50000),
MANAGERUNIT varchar(50000),
LINKTEL varchar(50000),
POLICYNAME varchar(50000),
RECORDRESULT varchar(50000),
UPLOADTIME varchar(50000),
GRIDID varchar(50000),
get_info_msg varchar(50000),
MAPX varchar(50000),
DELETETYPE varchar(50000),
latitude varchar(50000),
HPHAZARDPOINT_STATUS varchar(50000),
FAXTELEPHONE varchar(50000),
ISSIZE varchar(50000),
ENTPNAME varchar(50000),
TRADECODEDETAIL varchar(50000),
is_space varchar(50000),
ISRATE varchar(50000),
REVIEWDATE varchar(50000),
DELETEDEPT varchar(50000),
MODELENTPFLAG varchar(50000),
SCALEKIND varchar(50000),
LINKNAME varchar(50000),
POLICYTEL varchar(50000),
AREACODE_JURISDICTION varchar(50000),
EXAMDATE varchar(50000),
FIXEDASSETS varchar(50000),
GRID varchar(50000),
POSTCODE varchar(50000),
SUPERVISEDEPTNAME varchar(50000),
FILLDATE varchar(50000),
EXAMSTATE varchar(50000),
SIMPLENAME varchar(50000),
ISSAFEINSU varchar(50000),
ISGRADE varchar(50000),
ISSUBLETENTP varchar(50000),
LASTYEARINCOME varchar(50000),
FILLMAN varchar(50000),
RELATIONS varchar(50000),
INNERID varchar(50000),
GRADE varchar(50000),
ENTPCODE varchar(50000),
INDUSTRIALPARK varchar(50000),
SCJYDWLX varchar(50000),
LEVELSTATE varchar(50000),
REVIEWDEPTNAME varchar(50000),
TEMPNUM varchar(50000),
UPDATEBY varchar(50000),
MANAGEHIGHTNUMBER varchar(50000),
FILLTEL varchar(50000),
PY varchar(50000),
ECOTYPE varchar(50000),
LESSORNAME varchar(50000),
LABEL varchar(50000),
HAVECREDENTIAL varchar(50000),
error_msg varchar(50000),
LITTLETYPE varchar(50000),
DUSTMAN varchar(50000),
MANAGEZONE varchar(50000),
HAZARDPROPERTY varchar(50000),
PUCENTPSCORE varchar(50000),
REGISTERDEPT varchar(50000),
INDUSTRYTYPE varchar(50000),
RECORDID varchar(50000),
MONITORTYPE varchar(50000),
BUILDINGCODE varchar(50000),
GRADECHECKMAN varchar(50000),
DUSTDATE varchar(50000),
GRADETIMEEND varchar(50000),
SPECIALJOBBOOKNUM varchar(50000),
get_info_count varchar(50000),
PROJECTNAME varchar(50000),
WEBSITE varchar(50000),
ISSAFEMONITORENTP varchar(50000),
PRODUCTIONRIGHT varchar(50000),
ISHUNDRED varchar(50000),
LESSORTEL varchar(50000),
REGISTERSAFEENGINEER varchar(50000),
EXAMOPINION varchar(50000),
REGISTERADDR varchar(50000),
WJ_ varchar(50000),
LITTLEINDUSTRYTYPE varchar(50000),
PINNERID varchar(50000),
MANAGERDPT varchar(50000),
VALIDDATE_START varchar(50000),
F_KEY varchar(50000),
X5_TEST2 varchar(50000),
REVIEWMAN varchar(50000),
REGISTERUSER varchar(50000),
UPDATETIME varchar(50000),
X5_TEST1 varchar(50000),
ROOMCODE varchar(50000),
MININGWAY varchar(50000),
DELETEBY varchar(50000),
AREACODE varchar(50000),
MAPY varchar(50000),
RISKLEVEL varchar(50000),
EXAMDEPT varchar(50000),
REGISTERID varchar(50000),
TOTALEARNING varchar(50000),
ISFIREKEY varchar(50000),
EMPQTY varchar(50000),
TRADECON varchar(50000),
RECORDDEPT varchar(50000),
MAINPRODUCT varchar(50000),
DELETEFLAG varchar(50000),
REGISTERDATE varchar(50000),
wgs84_y varchar(50000),
STAFFNUM varchar(50000),
ADDRESS varchar(50000),
PENTPNAME varchar(50000),
EMAIL varchar(50000),
CREATEBY varchar(50000),
BUILDINGCODENAME varchar(50000),
SAFEEDUQTY varchar(50000),
MAINMATERIAL varchar(50000),
ENTPSIZE varchar(50000),
INNERIDTEMP varchar(50000),
CREATETIME varchar(50000),
RATE varchar(50000),
ADDRESSCODE varchar(50000),
PRODUCTLINENUM varchar(50000),
EMPLOYEENUM varchar(50000),
SPECIALJOBNUM varchar(50000),
ISKEY varchar(50000),
LEV varchar(50000),
VALIDDATE_END varchar(50000),
DUSTDEPT varchar(50000),
ISSYNO varchar(50000),
DUSTUSER varchar(50000),
PUCENTPGRADE varchar(50000),
STATE varchar(50000),
XH varchar(50000),
ENTERPRISESTATE varchar(50000),
MAINPRODUCTION varchar(50000),
STATEDATE varchar(50000),
FILLENTPNAME varchar(50000))

官方文档:PostgreSQL: Documentation: 11: F.38. tablefunc

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PostgreSQL是一种开源的关系型数据库,它提供了多种管理工具来操作数据库,其中包括psql和pg_dump命令。 psql是一种命令行工具,可以用来与PostgreSQL数据库进行交互。它不仅能够执行SQL语句,还可以支持交互式命令。在使用psql命令时,有时需要在命令中包含密码信息。可以使用以下的方式来在命令行中带密码执行SQL语句: 1. 在命令行中输入psql命令,启动psql工具。 2. 输入连接数据库的命令,例如:psql -U username -d dbname -h hostname -p port。 3. 输入密码,此时必须在命令行中输入密码。 4. 执行SQL语句,例如:SELECT * FROM tablename; pg_dump是PostgreSQL数据库备份工具,可以用来将数据库中的数据导出到一个文件中。使用pg_dump命令时,也需要在命令行中包含密码信息。可以使用以下的方式在命令行中带密码执行pg_dump命令: 1. 在命令行中输入pg_dump命令,启动pg_dump工具。 2. 输入数据库连接信息和密码,例如:pg_dump -U username -d dbname -h hostname -p port -W。 3. 执行备份操作,例如:pg_dump -U username -d dbname -h hostname -p port -W > backup.sql。 总的来说,在使用psql和pg_dump命令时,为了在命令中包含密码信息,需要使用“-W”参数将密码输入到命令行中。当然,这种方式存在一定的安全隐患,因为密码可以被其他人看到。因此,最好使用其他方式来进行密码管理,例如使用配置文件、环境变量或者其他安全的方式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值