首页 > 解决方案 > 如何使视图从 2 个表显示为 1 个表,以行为列

问题描述

我有 2 张桌子:

CREATE TABLE public.objects
(
  id bigint NOT NULL DEFAULT nextval('objects_id_seq'::regclass),
  value text,
  CONSTRAINT objects_pkey PRIMARY KEY (id)
);
CREATE TABLE public.relation
(
  id1 bigint,
  id2 bigint,
  multiplier integer
);

objects 表存储有关任何对象的数据,relation 表通过对象的 id 存储对象之间的关系,multiplier 是有关关系的数据。

请帮助请求将此显示为简单的表格,其中对象为列和行,乘数为关系值(列和行)

像这样

Comps 和 Products 像对象和值像乘数

Comps 和 Products 作为对象,值作为乘数。

在此处输入图像描述

在此处输入图像描述

标签: sqlpostgresqlpivotcrosstab

解决方案


@Fahad Anjumthanx....

SELECT * FROM crosstab('select o.value, o1.value, r.multiplier::text FROM objects as o, objects as o1, relation as r 
    where 
        o.id=r.id1 and
        o1.id = r.id2')
    AS ct(com text, P1 text, P2 text, P3 text);

这是工作...


推荐阅读