sql - Oracle SQL - 当使用分析函数组合多行时, 'prefer' 某些值高于其他值

标签 sql oracle

我可能会做这样的事情:

select 
  max(val), max(val2), max(val3) from table
group by
  val4;

获取此示例输出:

Table
val1   val2   val3   val4
A      P      Z      1
P      Z      P      1

对于我的用例,我们假设“P”是一个重要值,因此如果按 val4 分组时 P 出现在某处,那么这就是我想要显示的值。也就是说,在这种情况下,当按 val4 分组时,我想为 val1、val2、val3 表面显示 ('P','P','P')。

这可以或应该如何完成?

最佳答案

我只会使用条件聚合。例如:

select coalesce(max(case when val1 = 'P' then val end), max(val1)) as val1,
       coalesce(max(case when val2 = 'P' then val end), max(val2)) as val2,
       coalesce(max(case when val3 = 'P' then val end), max(val3)) as val3
from table
group by val4;

如果任何值与 'P' 匹配,则每个 coalesce() 中的第一个表达式将返回 'P'。如果不是,则返回最大值。

关于sql - Oracle SQL - 当使用分析函数组合多行时, 'prefer' 某些值高于其他值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34889705/

相关文章:

mysql - 为什么 SQL 查询可以使用一个值而不是另一个值?

mysql - 查询重复记录mysql

sql - 找不到父 key

oracle - 数据库驱动错误: error possibly near <*> indicator at char 15 in 'TRUNCATE TABLE <*>MONTHLY_DATA' )

sql - 触发器使用 "standard"SQL 更新当前日期

javascript - SQL 事务和 JavaScript Promises 有什么关系?

database - JDBC DriverManager 尝试使用非指定的 Oracle 驱动程序

sql - 同一个结果集中的不同表字段 Oracle

c++ - Oracle 数据库中的 OCCI - 在 OCI.dll 库中找不到过程 OCIPIsDescRebuilt 的入口点

sql - INSERT 中的列少于 VALUES