首页 > 解决方案 > 如何过滤我的表以在 Oracle 中显示结果?

问题描述

我有一个源表:

在此处输入图像描述

我需要将其映射到目标表,在该表中我会选择一个唯一 ID 和颜色,其状态值最小,形状最大,该 ID 的状态值最大。例如, 在此处输入图像描述

标签: sqloraclecase

解决方案


您可以在子查询中使用Oracle 分析函数。无需连接。

select
r.id,
r.color,
r.shape
from
(
    select
    s.id,
    first_value(s.color) over (partition by s.id order by s.status) as color,
    first_value(s.shape) over (partition by s.id order by s.status desc) as shape,
    row_number() over (partition by s.id order by s.status) as row_index
    from shapes s
) r
where r.row_index = 1;

推荐阅读