从两个不同的条件在一个查询中获取不同的值
问题描述:
我需要有像结果如下从两个不同的条件在一个查询中获取不同的值
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;
谢谢M kha盖Junaid,而不是'SUM'我也可以用count?对于'CASE'它是否需要去该部分才能执行它? – AKIWEB
@akiiddweeber是的,你也可以在'count'中使用'CASE' –
布尔的'SUM'在PostgreSQL中不起作用。第二个将会,并且可以被简化为'CASE'上的'count'而不带'ELSE'子句(从而产生默认的'null')。 –