Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 将表(列)值转换为独立行_Sql_Postgresql - Fatal编程技术网

Sql 将表(列)值转换为独立行

Sql 将表(列)值转换为独立行,sql,postgresql,Sql,Postgresql,我有一个主键为(state+city)的表和其他列(product1、product2、product3、product4)。我试图创建一个新表,其中每一行对应于(州+市)&(其中一个)产品+一些静态值列。如何在PostgreSQL查询中执行此操作 最好看看我正在看的输入和输出数据的例子。我在这个论坛上查看了MySQL或SQL Server中的各种将行转换为列的示例,但它们似乎对我没有帮助 示例数据表(“输入表”和“所需输出”选项卡) 您可以使用union all,一次选择一列,如下所示。您可以

我有一个主键为
(state+city)
的表和其他
列(product1、product2、product3、product4)
。我试图创建一个新表,其中每一行对应于
(州+市)
&(其中一个)产品+一些静态值列。如何在PostgreSQL查询中执行此操作

最好看看我正在看的输入和输出数据的例子。我在这个论坛上查看了MySQL或SQL Server中的各种将行转换为列的示例,但它们似乎对我没有帮助

示例数据表(“输入表”和“所需输出”选项卡)


您可以使用union all,一次选择一列,如下所示。您可以根据需要向每个SELECT查询添加其他列(TextA、TextB、Date…)

SELECT State,City,'Product1' Product, Product1 Value FROM your_table
UNION ALL
SELECT State,City,'Product2' Product, Product2 Value FROM your_table
UNION ALL
SELECT State,City,'Product3' Product, Product3 Value FROM your_table
UNION ALL
SELECT State,City,'Product4' Product, Product4 Value FROM your_table

您可以将各个列交叉连接为行:

选择t.state、t.city、x.product
形成表t
横向交叉连接(
值(t.product1)、(t.product2)、(t.product3)
)as x(产品)
或者更紧凑一点:

选择t.state、t.city、x.product
形成表t
交叉连接unnest(数组[t.product1,t.product2,t.product3])作为x(产品)
Please您的问题可能重复(通过单击下面的链接),并根据该数据添加一些内容和预期输出。请(您的问题-不要在评论中发布代码或附加信息,也不要链接到外部站点以获取样本数据。)