2015-10-15 57 views
0

我有這樣的代碼在PostgreSQL:PostgreSQL的:添加到外殼

CASE 
    WHEN a > b THEN 'a is bigger than b' 
    WHEN a > c THEN 'a is bigger than c' 
    ELSE ' ' 
END AS "all bigs", 

現在的事情是我需要添加兩當的結合,使第二何時 不能抹去第一個。

我的專欄看起來應該(a is bigger than b\na is bigger than c):

all bigs 
--------- 
a is bigger than a 
a is bigger than c 

不喜歡:

all bigs 
--------- 
a is bigger than c 

如何做到這一點?

@zedfoxus,嘗試這一點,但沒有運氣( 「錯誤:語法錯誤或接近 」聯盟「」):

CASE 
    WHEN a > b THEN 'a is bigger than b'::text 
UNION ALL 
    WHEN a > c THEN 'a is bigger than c'::text 
END AS "all bigs" 
+1

的'CASE'語句只解決單行的值。它不能奇蹟般地向查詢添加更多行。您需要顯示*整個*查詢並告訴我們您要做什麼,最好是使用您要查詢的數據集的示例。 –

+0

@MikeChristensen,你爲什麼需要整個查詢?我認爲這應該夠了。看起來非常簡單。 –

+0

這是您要退回的唯一專欄,還是有其他人?如果'a'是最小的值,那麼期望的結果是什麼?一行空白?兩個空行? –

回答

0

試試這個:

create table test (a int, b int, c int); 
insert into test values (3, 2, 1); 

select case when a > b then 'a is bigger than b' else '' end as "all bigs" from test 
union all 
select case when a > c then 'a is bigger than c' else '' end as "all bigs" from test 
+0

可以從'測試'被刪除?這只是數據庫中的一個視圖。 –

+0

可能。你可以把你的'create view'語句放在你的問題中,這樣我可以提供更好的指導嗎? – zedfoxus

+0

即使'a'小於'b'和'c',這也會導致2 *空*行,如果'a'小於另一個值,則爲1空行。 –