微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

postgresql – 如何从hstore数据创建数据透视表?

想象一下,我有一辆带有现场数据的桌面车:

CARS
name  |  data
car 1 |  { "doors" => "5","engine" => "1.1" }
car 2 |  { "doors" => "3","engine" => "1.1","air_conditioning" => "true" }
car 3 |  { "doors" => "5","engine" => "1.4" }

假设数据键是动态的(可以添加更多),我如何从这些数据创建一个数据透视表,如下所示:

CROsstAB
name  |  doors  |  engine  |  air_conditioning
car 1 |  5      |  1.1     |
car 2 |  3      |  1.1     |  "true"
car 3 |  5      |  1.4     |

解决方法

以下是如何获得您要求的结果:

CREATE TABLE hstore_test (id bigserial primary key,title text,doors integer,engine text,air_conditioning boolean)
INSERT INTO hstore_test (title,doors,engine,air_conditioning)
VALUES ('Car1',2,'1.1',false),('Car2',4,'1.2',true),('Car3',3,'1.3',('Car4',5,'1.4',null);

DROP TABLE IF EXISTS hstore_persist;
CREATE TABLE hstore_persist AS
SELECT hstore(t) car_data FROM hstore_test AS t;

SELECT car_data->'title' "name",car_data->'doors' doors,car_data->'engine' engine,car_data->'air_conditioning' air_conditioning
FROM hstore_persist

这将导致表格

name | doors | engine | air_conditioning
Car1 |     2 |    1.1 | f
Car2 |     4 |    1.2 | t
Car3 |     3 |    1.3 | f
Car4 |     5 |    1.4 |

但是,它没有任何“交叉”.这只是使用hstore的访问器方法以您在示例中显示的方式显示数据.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐