2013-01-23 85 views
0

我試圖將包含許多列(未知數)的錶轉換爲具有四列的表。使用postgresql Unpivot

我的查詢看起來是這樣的:

INSERT INTO measurement (timestamp, sensor, value) 
SELECT d."Timestamp", 
     (SELECT s.id FROM sensor s WHERE s.name = columns.column_name), 
     (SELECT columns.column_name from sensor_list where "Timestamp" = d."Timestamp")  
FROM sensor_list d, 
     (SELECT column_name FROM information_schema.columns WHERE table_name = 'sensor_list' AND column_name <> 'Timestamp' ORDER BY ordinal_position) columns 

這行不通。該ERRORMESSAGE我收到的是:

"ERROR: >>value<< has type numeric, but the expression is of type information_schema.sql_identifier" 

是否有機會得到它通過轉換"columns.column_name"字符串或別的東西,像quote_ident()工作?

我所有的嘗試都沒有奏效。 非常感謝。

回答

1

如果列值的數據類型是數字,則代碼會給出錯誤。你想分配列名或列

+0

我想我想使用column_name。 由於sensor_list如下所示: 時間戳|傳感器1 | Sensor2 |傳感器3 | ... |傳感器999 | ------------------------------------------------- ------------ 時間|值|值| ... –