oracle - 复杂的 SQL 查询

标签 oracle tsql sql

有一张客户表。我想在一个查询中列出事件和非事件状态。我该怎么做?

SELECT count(*) as ACTIVE, 
count(*) as INACTIVE 
FROM V_CUSTOMER 
WHERE STATUS='a' AND STATUS='i'

最佳答案

我们可以使用 CASE 语句来翻译 STATUS 的两个值:

SELECT 
    sum(case when STATUS = 'a' then 1 else 0 end) as ACTIVE 
    , sum(case when STATUS = 'd' then 1 else 0 end) as DEACTIVE 
FROM V_CUSTOMER 

不需要 WHERE 子句,除非有大量具有其他 STATUS 值的记录,在这种情况下使用 OR 而不是 AND:

WHERE STATUS='a' OR STATUS='d'         

关于oracle - 复杂的 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3234592/

相关文章:

java - 在java中使用JTextfields将数据更新到oracle数据库中的问题

java - 编写触发器或通过编程实现操作?

oracle - 使用 Ansible playbook 运行 Oracle SQL 脚本

sql - 查找多父层次结构的深度 - SQL

sql - T-SQL 截断文本并在末尾添加数字以避免重复

java - 从 BLOB 数据类型转义特殊字符

sql-server - 通过减少生成的唯一查询计划来优化动态 SQL 存储过程

mysql - LIMIT 1 在 Visual Studio 2012 中的 SQL 查询生成器中不起作用

mysql - SQL 查询的最新日期

java - Hibernate @Where 子句