亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

PostgreSQL交叉表查詢

PostgreSQL交叉表查詢

動漫人物 2019-05-25 15:29:44
PostgreSQL交叉表查詢有沒有人知道如何在PostgreSQL中創建交叉表查詢?例如,我有下表:Section    Status    CountA          Active    1A          Inactive  2B          Active    4B          Inactive  5我想查詢返回以下交叉表:Section    Active    InactiveA          1         2B          4         5這可能嗎?
查看完整描述

4 回答

?
慕容3067478

TA貢獻1773條經驗 獲得超3個贊

您可以使用附加模塊tablefunccrosstab()功能- 您必須為每個數據庫安裝一次。從PostgreSQL 9.1開始,你可以使用它:CREATE EXTENSION

CREATE EXTENSION tablefunc;

在你的情況下,我相信它看起來像這樣:

CREATE TABLE t (Section CHAR(1), Status VARCHAR(10), Count integer);


INSERT INTO t VALUES ('A', 'Active',   1);

INSERT INTO t VALUES ('A', 'Inactive', 2);

INSERT INTO t VALUES ('B', 'Active',   4);

INSERT INTO t VALUES ('B', 'Inactive', 5);


SELECT row_name AS Section,

       category_1::integer AS Active,

       category_2::integer AS Inactive

FROM crosstab('select section::text, status, count::text from t',2)

            AS ct (row_name text, category_1 text, category_2 text);


查看完整回答
反對 回復 2019-05-25
?
qq_遁去的一_1

TA貢獻1725條經驗 獲得超8個贊

SELECT section,

       SUM(CASE status WHEN 'Active' THEN count ELSE 0 END) AS active, --here you pivot each status value as a separate column explicitly

       SUM(CASE status WHEN 'Inactive' THEN count ELSE 0 END) AS inactive --here you pivot each status  value as a separate column explicitly


FROM t

GROUP BY section


查看完整回答
反對 回復 2019-05-25
?
蝴蝶刀刀

TA貢獻1801條經驗 獲得超8個贊

使用JSON聚合的解決方案:


CREATE TEMP TABLE t (

  section   text

, status    text

, ct        integer  -- don't use "count" as column name.

);


INSERT INTO t VALUES 

  ('A', 'Active', 1), ('A', 'Inactive', 2)

, ('B', 'Active', 4), ('B', 'Inactive', 5)

                   , ('C', 'Inactive', 7); 



SELECT section,

       (obj ->> 'Active')::int AS active,

       (obj ->> 'Inactive')::int AS inactive

FROM (SELECT section, json_object_agg(status,ct) AS obj

      FROM t

      GROUP BY section

     )X


查看完整回答
反對 回復 2019-05-25
  • 4 回答
  • 0 關注
  • 840 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號