当前位置: 首页 > 面试题库 >

将行折叠为一列

盖锐进
2023-03-14
问题内容

我有一个具有以下布局的表:

 ID   Label   Value
 --   -----   -----
 1    Lab1    Value1-1
 1    Lab2    Value1-2
 1    Lab3    Value1-3
 1    Lab4    Value1-4
 1    Lab5    Value1-5
 1    Lab6    Value1-6
 2    Lab1    Value2-1
 2    Lab2    Value2-2
 2    Lab3    Value2-3
 2    Lab4    Value2-4
 2    Lab5    Value2-5
 2    Lab6    Value2-6
 ...

我想将表转换为如下所示的布局:

 ID   Lab1      Lab2       Lab3       Lab4       Lab5       Lab6
 1    Value1-1  Value1-2   Value1-3   Value1-4   Value1-5   Value1-6
 2    Value2-1  Value2-2   Value2-3   Value2-4   Value2-5   Value2-6
 ...

我在PostgreSQL中使用SQL。有没有一种简单的方法(且内存效率高)来做到这一点?我看过一些提到使用透视的帖子,但是我不确定这是否行得通,而且我看到的描述似乎是针对Oracle的。


问题答案:

如果尚未安装,请首先安装扩展tablefunc。每个数据库需要做一次。

CREATE EXTENSION tablefunc;

你需要的PostgreSQL 9.1CREATE EXTENSION。在旧版本中,您必须使用以下命令从外壳运行安装脚本:

psql -d dbname -f SHAREDIR/contrib/tablefunc.sql

精美的手册中提供了有关Postgres
9.0的
更多信息。

然后,您可以使用像这样的查询:

SELECT *
FROM   crosstab (
    'SELECT id
           ,label
           ,value
     FROM   t
     ORDER  BY 1, 2',

    'SELECT DISTINCT label
     FROM   t
     ORDER  BY 1')
AS tbl (
 id   int
,lab1 text
,lab2 text
,lab3 text
,lab4 text
,lab5 text
,lab6 text
);


 类似资料:
  • Collapsibles 是可折叠元素,扩大时,点击。他们允许您隐藏不立即与用户相关的内容。 气孔 创建一个气孔式可折叠组件,只要增加类 popout。 <ul class="collapsible popout" data-collapsible="accordion"> 可折叠组件的 HTML 结构 <ul class="collapsible" data-collapsible="accor

  • 如果你仅仅希望看到你所处理的代码文件的结构概览,折叠会是个非常有用的工具。折叠可以隐藏像函数和循环这样的代码块,来简化你屏幕上显示的东西。 当你把鼠标移到数字栏上,你就可以点击显示的箭头来折叠代码段。你也可以使用快捷键alt-cmd-[和alt-cmd-]来折叠和展开代码段。 使用alt-cmd-shift-{来折叠所有代码段,使用alt-cmd-shift-}来展开所有代码段。你也可以使用cmd

  • zf数字 创建折叠,数字参数为折叠行数 zo 打开折叠 zc 关闭折叠 zd 删除折叠 :set foldcolumn=4 显示折叠树 :mkview 保存折叠 :loadview 读取折叠 zr 打开同一层级所有折叠 zm 关闭同一层级所有折叠 zO 打开某一行的所有层级折叠 zC 关闭某一行的所有层级折叠 zR 打开所有折叠 zM 关闭所有折叠 :set foldclose=all 光标离开折

  • 主要内容:实例,实例,用法,选项,方法,实例,事件,实例折叠(Collapse)插件可以很容易地让页面区域折叠起来。无论您用它来创建折叠导航还是内容面板,它都允许很多内容选项。 如果您想要单独引用该插件的功能,那么您需要引用 collapse.js。同时,也需要在您的 Bootstrap 版本中引用 Transition(过渡)插件。或者,正如 Bootstrap 插件概览 一章中所提到,您可以引用 bootstrap.js 或压缩版的 bootstr

  • 主要内容:实例,实例,实例,实例Bootstrap4 折叠可以很容易的实现内容的显示与隐藏。 实例 <button data-toggle="collapse" data-target="#demo">折叠</button> <div id="demo" class="collapse"> Lorem ipsum dolor text.... </div> 实例解析 .collapse 类用于指定一个折叠元素 (实例中的 <di

  • Bootstrap折叠板插件允许你在网页中用一点点JavaScript以及CSS类切换内容。它是一个灵活的插件,使用少量的类(来自必需的过渡插件),以方便切换行为。 示例 点击下面的按钮,利用类的改变,显示或隐藏另一个元素: .collapse 隐藏内容 .collapsing 在过渡过程中应用到 .collapse.in 显示内容 你可以使用带href属性的链接,或者使用带data-target