2015-03-15 2 views
1

У меня есть таблица в базе данных POstgreSQL с несколькими столбцами, из которых только одно будет иметь введенное значение.postgresql возвращает первое положительное значение из нескольких столбцов queried

SELECT "Garden_GUID", "Municipality_Amajuba", "Municipality_Ilembe", "Municipality_Sisonke" from forms_garden 
WHERE "Garden_GUID" = 'testguid'; 
Garden_GUID | Municipality_Amajuba | Municipality_Ilembe | Municipality_Sisonke 
-------------+----------------------+---------------------+---------------------- 
testguid | Dannhauser   |      | 
(1 row) 

Я хочу создать представление, в котором записи из этих столбцов сортируются в один столбец.

Я пробовал:

CREATE VIEW municipality (GUID,funder,municipality) 
AS SELECT "Garden_GUID"GUID,"Funder"funder,"Municipality_Amajuba","Municipality_Ilembe","Municipality_Sisonke"municipality 
FROM forms_garden; 

но она возвращает ошибку:

ОШИБКИ: колонка «муниципалитет» задан несколько раз

Есть ли способ запроса различных municipality_ * столбцов строка за строкой и возвращает только первую положительную запись?

Большое спасибо заранее.

ответ

1

Я думаю coalesce() является то, что вы ищете:

with forms_garden as (
    select 'guid1' guid, 'Dannhauser' amajuba, null ilembe, null sisonke 
    union all select 'guid2', null, 'muni2', null 
    union all select 'guid3', null, null, 'muni3' 
) select guid, coalesce(amajuba,ilembe,sisonke) municipality from forms_garden; 
Смежные вопросы