【问题标题】:Transpose data into table presentation将数据转置为表格表示
【发布时间】:2019-03-21 11:07:11
【问题描述】:

我在 PostgreSQL 中有以下数据,我想转置。

第 2 列 - 代表表格引用,第 3 列是表格单元格引用,第 4 列是表格行,第 5 列是值。

期望的输出是

p_164 2017 2018
p_164  £ £
p_164 6,819,277 6,292,030
etc.

行数(第 4 列)可变

源数据

1803147 p_164   42955214    0    2017
1803147 p_164   42955215    0    2016
1803147 p_164   42955216    1   £
1803147 p_164   42955217    1    £
1803147 p_164   42955218    2   6,819,277
1803147 p_164   42955219    2    6,292,030
1803147 p_164   42955220    3   (395,131)
1803147 p_164   42955221    3    (509,444)
1803147 p_164   42955222    4   6,424,146
1803147 p_164   42955223    4    5,782,586
1803147 p_164   42955224    5   (5,841,975)
1803147 p_164   42955225    5    (5,433,515)
1803147 p_164   42955226    6   582,171
1803147 p_164   42955227    6    349,071
1803147 p_164   42955228    7   -
1803147 p_164   42955229    7    6
1803147 p_164   42955230    8   (25,346)
1803147 p_164   42955231    8    (38,773)
1803147 p_164   42955232    9   556,825
1803147 p_164   42955233    9    . 310,304
1803147 p_164   42955234    10  40,962
1803147 p_164   42955235    10   49,704
1803147 p_164   42955236    11  597,787
1803147 p_164   42955237    11   360,008
1803147 p_164   42955238    12  597,787
1803147 p_164   42955239    13  597,787
1803147 p_164   42955240    13   360,008
1803147 p_164   42955241    14  (47,412)
1803147 p_164   42955242    14   (796)
1803147 p_164   42955243    15  645,199
1803147 p_164   42955244    15   360,804
1803147 p_164   42955245    16  597,787
1803147 p_164   42955246    16   360,008
1803147 p_164   42955247    17  (47,412)
1803147 p_164   42955248    17   (796)
1803147 p_164   42955249    18  645,199
1803147 p_164   42955250    18   360,804
1803147 p_164   42955251    19  597,787
1803147 p_164   42955252    19   360,008
1803148 p_249   42955253    0    
1803148 p_249   42955254    0   Note
1803148 p_249   42955255    0    
1803148 p_249   42955256    0   2017£
1803148 p_249   42955257    0    
1803148 p_249   42955258    0   2016£
1803148 p_249   42955259    1   FIXED ASSETS

【问题讨论】:

    标签: postgresql transpose


    【解决方案1】:

    除非您有固定(或至少有限)数量的列,否则您无法真正转置或交叉制表。

    也就是说,我认为你可以通过使用 PostgreSQL 的数组来完成你想要做的事情。

    select col_2, array_agg (col_5) as col_5_values
    from source_table
    group by col_2, col_4
    

    我认为您会发现解构这些值非常容易。例如 array[2] (col_5_values[2]) 为您提供数组中的第二个元素。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-08-04
      • 1970-01-01
      • 1970-01-01
      • 2014-03-19
      • 2013-12-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多