Postgresql
從選擇中添加要查看的欄位(轉置欄位)
我有一個具有以下結構的表:
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 要求在函式呼叫時知道返回類型。如果返回類型是動態的,則需要兩個步驟:
- 動態建構您的查詢
- 執行它。
但這裡可能有一些適合你的東西: