相关疑难解决方法(0)

如何在 PostgreSQL 中旋转

表中有以下数据:

ID     Category   Value
1234   Cat01      V001
1234   Cat02      V002
1234   Cat03      V003
1234   Cat03      V004
1234   Cat03      V005
Run Code Online (Sandbox Code Playgroud)

我想要以下输出:

ID     Cat01  Cat02   Cat03
1234   V001   V002    V003
1234   V001   V002    V004
1234   V001   V002    V005
Run Code Online (Sandbox Code Playgroud)

我想要实现的输出是一种数据透视表,其中我将所有值垂直放置在一个表中,并且我希望将这些值水平放置,并将类别作为列。但是有些类别具有多个值,在这种情况下,我需要重复所有其他类别的值并为每个重复值创建一行

如何在 PostgreSQL 中完成?

postgresql pivot

5
推荐指数
2
解决办法
1万
查看次数

将总和列添加到 PostgreSQL 9.0 中的 crosstab() 查询

继我之前的问题之后:

在 PostgreSQL 9.0 中创建 crosstab() 数据透视表

我设法创建了一个数据透视表来ageband使用该crosstab()函数。我可以使用它来创建基本无几何表的视图或表。

但是,这仍然没有多大用处,因为我需要将其链接到gazetteers_and_addresses.unit_postcode表格以分配几何图形以进行进一步分析。

我将附上两个表的表结构和用于创建交叉表的原始代码。

CREATE OR REPLACE VIEW adult_social_care.vw_ageband AS (
    SELECT * FROM crosstab(
        'SELECT postcode_nospace_, ageband, count(ageband) as total_count
         FROM adult_social_care.activities_in_localities_asc
         GROUP BY postcode_nospace_, ageband
         ORDER BY postcode_nospace_'

         ,$$VALUES ('18-24'::text), ('25-34'), ('35-44'), ('45-54'), ('55-64'), ('65-74'), ('75-84'), ('85-94'), ('95 AND OVER')$$)
    AS ct("postcode" text, "18-24" numeric, "25-34" numeric,"35-44" numeric, "45-54" numeric, "55-64" numeric, "65-74" numeric, "75-84" numeric, "85-94" numeric, "95 AND OVER" numeric));
Run Code Online (Sandbox Code Playgroud)

表定义:

activities_in_localities_asc

CREATE …
Run Code Online (Sandbox Code Playgroud)

postgresql datatypes cte pivot postgresql-9.0

2
推荐指数
1
解决办法
4518
查看次数

标签 统计

pivot ×2

postgresql ×2

cte ×1

datatypes ×1

postgresql-9.0 ×1