sql - 在单个查询中从两个不同的条件获取不同的值

标签 sql postgresql case

我需要得到如下结果

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;

有没有其他方法可以在一个查询中同时拥有这两个条件? 在这方面的任何帮助都会很棒!

P.S: 还有其他方法可以检查 boolean 条件,而不是 columnone LIKE %hjk% 目标 columnone 不为空

最佳答案

尝试使用 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;

关于sql - 在单个查询中从两个不同的条件获取不同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22006164/

相关文章:

SQL Server : add characters to a column

postgresql - Hibernate:重复键值违反唯一约束

用于遍历整个无向图并返回找到的所有边的 PostgreSQL SQL 查询

python - case/switch 语句的 Python 等价物是什么?

sql - 是否可以在 dotnet 中引入多线程而不显式创建新线程?

sql - 从 VB.NET 调用存储过程的问题

sql - Access数据库查询锁定编辑表的能力?

postgresql - 在 PostgreSQL 表的列中插入下标文本

case - Netsuite 公式 - "blank"或 "null"字段

MySQL 案例计数