将行转换为postgres中的列

时间:2014-04-08 15:16:00

标签: sql postgresql pivot crosstab

我有一个查询,其中包含以下行:

Id     |      key          | Value 
1         Type.name.1        Value1 
2         Type.name.2        Value2
3         Type.desc.1        Desc1
4         Type.desc.2        Desc2

我需要一个返回此内容的查询:

Type.NameId  | Type.DescId
1              3
2              4

我怎样才能在Postgres中做到这一点?

1 个答案:

答案 0 :(得分:0)

SELECT *
FROM  (
   SELECT right(key, -10) AS name_id
   WHERE "value" ~~ 'Value%'
   ) n
FULL JOIN (
   SELECT right(key, -10) AS name_id, id AS desc_id
   WHERE "value" ~~ 'Desc%'
   ) d USING name_id;

确切的表格取决于你问题中遗漏的很多细节。

您的桌面设计和命名惯例让我感到沮丧。