2014-02-25 154 views
1

我需要有像結果如下從兩個不同的條件在一個查詢中獲取不同的值

section_one | section_two 
56788    678 

,這是我寫有上述結果的查詢分別

Select count(*) as section_one from tableNew 
WHERE columnone LIKE %hjk% 

而且

Select count(*) as section_two from tableNew 
WHERE columnone NOT LIKE %hjk%; 

如何在一個查詢中組合這兩個並獲得如上所示的結果?

我想下面的東西,但似乎並沒有正常工作

select *, 
CASE 
WHEN columnone LIKE %hjk% THEN count(1) as section_one 
ELSE count(1) as section_two 
END 
from tableNew 
Group by tableid; 

是否有任何其他的方式,以及中都有一個代替的條件? 任何幫助,這將是偉大的!

PS:也就是有任何其他方式以及檢查boolean條件等代替columnone LIKE %hjk%目標columnone IS NOT NULL

回答

1

試試這個使用SUM

select 
SUM(columnone LIKE %hjk%) as section_one, 
SUM(columnone NOT LIKE %hjk%) as section_two 
from tableNew 
Group by tableid; 

或者你可以使用CASE

select 
SUM(CASE WHEN columnone LIKE %hjk% THEN 1 ELSE 0 END) as section_one, 
SUM(CASE WHEN columnone NOT LIKE %hjk% THEN 1 ELSE 0 END) as section_two 
from tableNew 
Group by tableid; 
+0

謝謝M kha蓋Junaid,而不是'SUM'我也可以用count?對於'CASE'它是否需要去該部分才能執行它? – AKIWEB

+0

@akiiddweeber是的,你也可以在'count'中使用'CASE' –

+1

布爾的'SUM'在PostgreSQL中不起作用。第二個將會,並且可以被簡化爲'CASE'上的'count'而不帶'ELSE'子句(從而產生默認的'null')。 –

相關問題