我有一个使用此方案的SQL表

[A Path] [B Path] [C Path] [D Path]

我想查询包含大约where个子句的表(它将匹配单行),并以表格形式显示结果.

因此,如果匹配的行是

A Path B Path C Path D Path
aValue bValue cValue dValue

我希望将结果介绍为

File Path
A aValue
B bValue
C cValue
D dValue

我try 使用SQL UNPIVOT,但找不到正确的语法,我也怀疑UNPIVOT不会达到我的目的,因为它需要一些聚合函数.如果我说错了,请纠正我.

推荐答案

CROSS APPLY (VALUES is often far clearer than UNPIVOT

SELECT
  v.File,
  v.Path
FROM YourTable t
CROSS APPLY (VALUES
  ('A', t.A_path),
  ('B', t.B_path),
  ('C', t.C_path),
  ('D', t.D_path)
) v(file, path);

Sql相关问答推荐

将SEMI JOIN、ANTI JOIN转换为非连接SQL

如何在Snowflake SQL存储过程中传递LIMIT和OFFSET的参数?

为什么在postgres中,横向连接比相关子查询快?

从自定义日期和时间开始,每月具有给定状态的公司数量

PostgreSQL抽奖查询

每年独特口味的冰淇淋数量

最小非重复集的SQL查询

获取分布在同一行的列中的出现次数

删除行而不使数据库超载

在 postgres 中插入或更新 jsonb 数组的对象

如何从三个连接表中获取数据,并始终显示第一个表中的数据,以及第三个表中的空值或现有记录?

比使用NOT EXISTS更高效的SQL删除方法是什么?

PostgreSQL分割字符串为子词并判断其是否存在于其他字符串中

根据行号将列转置为没有任何id或键列的行

在给定的日期范围内填写缺失的日期

查找具有相同连接列数据的所有记录

连接表时避免重复

在时态表和非时态表之间使用 EXCEPT 的 SQL 子查询给出表达式错误数

在 PostgreSQL 中,如何将数组中的每个元素用作另一个表中的键?

从多个连接返回 1 行到同一个表 - SQL Server