2015-01-15 4 views
0

В основном, когда дан список строк,из массива строк, создать таблицу

Я хочу, чтобы создать таблицу с select заявления.

Например,

"A", "B", "C", 

Я хочу, чтобы создать таблицу в качестве суб-выбора, как:

sub-select 
+---------+ 
| "A" | 
+---------+ 
| "B" | 
+---------+ 
| "C" | 
+---------+ 

Как это сделать в красном смещении и Postgres?

Спасибо!

Обновление:

выбрать 'a' as A;

вроде того, что я хочу, что возвращается:

 a 
+---------+ 
| "a" | 
+---------+ 

Как у меня есть несколько строк для этого столбца a из запроса select 'a' as A;

+0

Я только получил 'выбирать«а»А,' –

ответ

0

Один из способов преобразовать значение столбца в несколько строк с помощью функции split_part и UNION.

Вот пример.

Источник Таблица:

=> CREATE TABLE t_csv (value varchar(64)); 
=> INSERT INTO t_csv VALUES ('"A","B","C"'); 
=> INSERT INTO t_csv VALUES ('"D","E"'); 
=> INSERT INTO t_csv VALUES ('"F","G","H","I"'); 
=> SELECT * FROM t_csv; 
     value 
----------------- 
"D","E" 
"A","B","C" 
"F","G","H","I" 
(3 rows) 

Вот запрос, чтобы получить несколько строк.

=> WITH a AS (SELECT value FROM t_csv) 
SELECT * FROM 
(
SELECT split_part(a.value,',',1) AS value FROM a 
UNION 
SELECT split_part(a.value,',',2) AS value FROM a 
UNION 
SELECT split_part(a.value,',',3) AS value FROM a 
UNION 
SELECT split_part(a.value,',',4) AS value FROM a 
) 
WHERE value != ''; 
value 
------- 
"A" 
"B" 
"C" 
"D" 
"E" 
"F" 
"G" 
"H" 
"I" 
(9 rows) 
0

не имеют возможности проверить его в БД, но что-то вроде что

select * INTO table from (
SELECT CAST('A' AS VARCHAR(100)) AS col 
UNION ALL 
SELECT 'B' AS col 
UNION ALL 
SELECT 'C' AS col 
) a 
+0

Спасибо, но не работает –

0

Вы можете использовать string_to_array и unnest

select * 
from unnest(string_to_array('"A","B","C"', ',')) 

(Но я не знаю, если это доступно в Redshift)

+0

я получаю 'функция unnest (текст []) не существует ПОДСКАЗКА: Ни одна функция не совпадает с заданным именем и типами аргументов , Возможно, вам придется добавлять явные типы. ' –

+0

Redshift, по-видимому, не имеет этой функции (Postgres) –

Смежные вопросы