Postgresql

從選擇中添加要查看的欄位(轉置欄位)

  • February 4, 2015

我有一個具有以下結構的表:

CREATE TABLE test
(
 id integer,
 field character varying, 
 value character varying
);

field     value
------    -----
field1    value1
field2    value2
field3    value3
...       ...

我需要將欄位值轉換為視圖中的欄位,並將欄位值轉換為“值”欄位的值。我需要的範例:

field1    field2    field3      ...
------    -----     ------      ----
value1    value2    value3      ...

我不知道如何開始建構創建視圖語句。

SELECT對於您提出的簡單案例,從您的排序值建構一個數組並在列表中一一取消嵌套

SELECT arr[1] AS field1
    , arr[2] AS field2
    , arr[3] AS field3
FROM  (SELECT ARRAY(SELECT value FROM test ORDER BY field) AS arr) sub;

顯然,這不是動態的,但僅適用於給定的欄位。您實際上並沒有要求“動態” - 除了您添加了標籤dynamic-sql

對於更複雜的操作,請使用crosstab()附加模組tablefunc。詳細說明:

仍然不是“動態的”。完全動態的函式幾乎不可能,因為 SQL 要求在函式呼叫時知道返回類型。如果返回類型是動態的,則需要兩個步驟:

  1. 動態建構您的查詢
  2. 執行它。

但這裡可能有一些適合你的東西:

引用自:https://dba.stackexchange.com/questions/90918