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

Postgres:将单行转换为多行(不可透视)

齐琦
2023-03-14
问题内容

我有一张桌子:

Table_Name: price_list
---------------------------------------------------
| id | price_type_a | price_type_b | price_type_c |
---------------------------------------------------
| 1  |    1234      |     5678     |     9012     |
| 2  |    3456      |     7890     |     1234     |
| 3  |    5678      |     9012     |     3456     |
---------------------------------------------------

我需要在Postgres中进行选择查询,其结果如下:

---------------------------
| id | price_type | price |
---------------------------
| 1  |  type_a    | 1234  |
| 1  |  type_b    | 5678  |
| 1  |  type_c    | 9012  |
| 2  |  type_a    | 3456  |
| 2  |  type_b    | 7890  |
| 2  |  type_c    | 1234  |
...

任何对链接到类似示例的帮助都将不胜感激。


问题答案:

SELECTLATERAL加入一个VALUES表达这项工作:

SELECT p.id, v.*
FROM   price_list p
     , LATERAL (
   VALUES
      ('type_a', p.price_type_a)
    , ('type_b', p.price_type_b)
    , ('type_c', p.price_type_c)
   ) v (price_type, price);


 类似资料:
  • 问题内容: 我有一个带有列的详细信息表: user_id int 代码int 值int 我想建立一个汇总表,如下所示: user_id int valueA int valueB int 在详细信息表中,valueA对应于说代码5,而valueB对应于说代码6,所以我正在寻找类似的东西: 插入摘要(user_id,valueA,valueB)VALUES(从详细信息中选择???); 当然,问题是我

  • 问题内容: 我有一个查询,该查询始终返回一行且包含 许多 列。我想将其转换为2列和多行。 原始结果: 我想要的是: 这可能吗? 编辑(澄清) 我正在寻找一种自动的方法。IE浏览器,我可以传递任何只返回1行的查询结果。 问题答案: 您正在使用Oracle 11g吗?您尝试过枢轴旋转还是取消枢轴旋转? 更多信息在这里。

  • 问题内容: 我有下表,该表为每个用户提供了多个电子邮件地址。 我需要将其展平为用户查询中的列。请根据创建日期为我提供“最新”的3个电子邮件地址。 问题答案: 使用从模块。

  • 问题内容: 我目前正在尝试将某些行PIVOT转换为列。问题是我并不总是知道有多少行可用。让我们看一个例子: 结果” 静态枢纽的SQL FIDDLE范例。我正在尝试实现动态枢轴-http://sqlfiddle.com/#!3/ 2be82/1 因此,这是我的难题:在这种情况下,我希望能够基于GroupID透视未知数量的列。 我希望能够将GroupID 3中的所有行都列为PIVOT。我需要在不知道g

  • 问题内容: 我在我的postgres数据库中存储了一个json数组。json看起来像这样: 现在,我需要选择数组,以便任何元素都位于查询结果的不同行中。因此,我执行的SELECT语句必须以这种方式返回数据: 我尝试使用该功能 但它不接受类型 问题答案: 我将pozs最初写的答案发布在评论部分。 适用于PostgreSQL的数组类型。 而是可以使用以下功能之一: (9.3+) (9.4+) (9.4