从两个不同的条件在一个查询中获取不同的值

从两个不同的条件在一个查询中获取不同的值

问题描述:

我需要有像结果如下从两个不同的条件在一个查询中获取不同的值

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

试试这个使用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')。 –