如何将列值分隔为列名?

时间:2018-01-04 07:33:00

标签: sql postgresql pivot crosstab

我试图用动态列创建一个表。

我有这张桌子。这只是简化,在其他情况下,这些可能有更多的值而不是3。

         name         
----------------------
 Fall
 Medication 
 Wander
(3 rows)

我想要得到这个结果。我需要将值分成列。

  Fall  | Medication | Wander 
--------+------------+--------
(0 rows)

2 个答案:

答案 0 :(得分:0)

你需要PIVOT表。不幸的是,MySQL(不像Oracle http://www.oracle.com/technetwork/articles/sql/11g-pivot-097235.html)没有PIVOT运算符,但似乎有一些变通方法。 MySQL pivot table

答案 1 :(得分:0)

您可以在较新的PostgreSQL中尝试使用其中一个crosstab()函数。见https://www.postgresql.org/docs/current/static/tablefunc.html(F.35.1.2和F.35.1.4)。它允许您指定具有行名(创建行),类别(创建列)和值(填充表的内部部分)的查询。

具有2个查询的变体可能特别有用,因为它允许您指定要与单独查询一起使用的列。