如何使视图从2个表显示为1个表,其中行为列

时间:2018-05-23 04:28:32

标签: sql postgresql pivot crosstab

我有两张桌子:

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
);

对象表存储有关任何对象的数据,关系表通过其id存储对象之间的关系,乘数是关于关系的数据。

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

喜欢这个

Comps and Products like objects and values like multiplier

将对象和产品作为对象和值作为乘数。

enter image description here

enter image description here

1 个答案:

答案 0 :(得分:0)

@Fahad Anjum thanx ....

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);

它的工作......