gpt4 book ai didi

sql - Oracle SQL -- 从两列中选择并合并为一

转载 作者:行者123 更新时间:2023-12-01 08:15:41 28 4
gpt4 key购买 nike

我有这张表:

Vals
Val1 Val2 Score
A B 1
C 2
D 3

我希望输出是一个单列,它是 Vals1 和 Val2 变量的“超集”。它还保留与该值关联的“分数”变量。

输出应该是:
Val Score
A 1
B 1
C 2
D 3

从这个表中选择两次然后联合是绝对不可能的,因为生产它非常昂贵。此外,我不能使用 with 子句,因为此查询在子查询中使用了一个,并且出于某种原因,Oracle 不支持两个 with 子句。

我并不真正关心如何处理重复值,无论是最简单/最快的。

如何生成合适的输出?

最佳答案

这是不使用 unpivot 的解决方案。

with columns as (
select level as colNum from dual connect by level <= 2
),
results as (
select case colNum
when 1 then Val1
when 2 then Val2
end Val,
score
from vals,
columns
)
select * from results where val is not null

这是没有 WITH 子句的基本相同的查询:
select case colNum
when 1 then Val1
when 2 then Val2
end Val,
score
from vals,
(select level as colNum from dual connect by level <= 2) columns
where case colNum
when 1 then Val1
when 2 then Val2
end is not null

或者更简洁一点
select *
from ( select case colNum
when 1 then Val1
when 2 then Val2
end Val,
score
from vals,
(select level as colNum from dual connect by level <= 2) columns
) results
where val is not null

关于sql - Oracle SQL -- 从两列中选择并合并为一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11198997/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com