0
我想將列表(從信息模式中檢索到)轉換爲可由PostgreSQL識別的表達式。參見下圖:將字符串轉換爲PL/PGSQL中的表達式
columns:= {'column1','column2','column3'};
我應該可以改變上面的代碼爲:
columns2:= {column1,column2,column3};
我需要這樣做是爲了讓我UNPIVOT水平表如下所示:
CREATE TABLE tbl1 AS SELECT id, unnest(columns) AS key, unnest(columns2) AS value
FROM tbl_orig;
現在,因爲元素是字符串,所以我最終得到的值是列名而不是值本身。
id| key |value |
1|col1 | col1 |
而不是
id | key | value |
1 | col1 | val_of_col1 |
我需要這個,因爲我想實現以下,但與動態檢索列代碼:
CREATE OR REPLACE VIEW vw_zcta_unpivot_ary
AS
SELECT zip
, unnest(
array['hu10', 'aland', 'pop10'
, 'awater', 'intptlat', 'intptlong', 'aland_sqmi', 'awater_sqmi']
) AS key
, unnest(
array[hu10::text, aland::text, pop10::text
, awater::text, intptlat::text, intptlong::text
, aland_sqmi::text, awater_sqmi::text]
) AS val
FROM zcta5;
標題表明這是一個PL/pgSQL函數裏面 - 是正確的?你看過動態SQL嗎? – harmic
我懷疑你想'EXECUTE',但是真的不能遵循你的問題。 –