如何过滤我的表以在 Oracle 中显示结果?
Posted
技术标签:
【中文标题】如何过滤我的表以在 Oracle 中显示结果?【英文标题】:How do I filter my table to show the result in Oracle? 【发布时间】:2018-12-12 17:54:46 【问题描述】:我有一个源表:
我需要将它映射到目标表,在该表中我会选择一个唯一的 ID 和颜色,状态值最小,形状值最大,该 ID 的状态值。例如,
【问题讨论】:
目标表在哪里? 一旦你选择了 id 然后从所有数据中选择状态值的最小值,并从所有数据中选择状态值的最大值???并插入目标表?? 如果你正在通过 id min max 那么输出到目标表是 i 1 black circle!!!!!!!!!!!!! 但是我需要该特定 ID 的最小和最大状态值,对于 ID 2 和 3,我还有两行。 是的,你是对的@nikhilsugandh 【参考方案1】:您可以在子查询中使用Oracle Analytic Functions。无需连接。
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;
【讨论】:
【参考方案2】:好的,我终于可以写下来了:
Select x.id, x.shape,y.color
from
(Select id ,shape
from Shapes
where status in ( Select max (status)
from shapes
group by id)
) x
join
(Select id , color
from shapes
where status in (Select min(status)
from shapes
group by id )
) y
on x.id = y.id;
欢迎简短回答
【讨论】:
这不会从发布的示例数据中产生您需要的输出。以上是关于如何过滤我的表以在 Oracle 中显示结果?的主要内容,如果未能解决你的问题,请参考以下文章