Oracle SQL-选择显式定义值的列
假设我有一张这样的桌子: 我的桌子Oracle SQL-选择显式定义值的列,sql,oracle,Sql,Oracle,假设我有一张这样的桌子: 我的桌子 Name | Age Jack 20 Joe 33 John 4 Bob 0 假设我想从mytable中选择所有行以及一个自定义值列:random:'rabbit'、'wild'、'nuts' Name | Age | random Jack 20 rabbit Joe 33 wild John 4 nuts Bob 0 NU
Name | Age
Jack 20
Joe 33
John 4
Bob 0
假设我想从mytable中选择所有行以及一个自定义值列:random:'rabbit'、'wild'、'nuts'
Name | Age | random
Jack 20 rabbit
Joe 33 wild
John 4 nuts
Bob 0 NULL
这怎么办呢?你想要
case
表达式吗
select t.*, (case when age = 20 then 'rabbit'
when age = 33 then 'wild'
when age = 4 then 'nuts'
end) as random
from table t;
您可以使用添加带有随机字符串的列
[类似答案][2[这有点灵活,但也更复杂
WITH random AS (
SELECT row_number() OVER (ORDER BY (1)) rank, val FROM (
SELECT 'rabbit' AS val FROM DUAL
UNION ALL
SELECT 'wild' AS val FROM DUAL
UNION ALL
SELECT 'nuts' AS val FROM DUAL
UNION ALL
SELECT NULL AS val FROM DUAL
)
ORDER BY dbms_random.value
),
myrows AS (
SELECT row_number() OVER (ORDER BY (1)) rank, mytable.*
FROM mytable
)
SELECT myrows.Name, myrows.Age, random.val
FROM myrows
LEFT JOIN random ON myrows.rank = random.rank;
不,根本没有条件,我只是希望能够将一个值列表作为另一列传递给
select
,这是可能的吗?从何处获取值?最好将手动键控作为查询语句的一部分“手动键控”是什么意思?是否有这些值的表和函数?是否要为每一行提取一个随机值?row\u number()。
WITH random AS (
SELECT row_number() OVER (ORDER BY (1)) rank, val FROM (
SELECT 'rabbit' AS val FROM DUAL
UNION ALL
SELECT 'wild' AS val FROM DUAL
UNION ALL
SELECT 'nuts' AS val FROM DUAL
UNION ALL
SELECT NULL AS val FROM DUAL
)
ORDER BY dbms_random.value
),
myrows AS (
SELECT row_number() OVER (ORDER BY (1)) rank, mytable.*
FROM mytable
)
SELECT myrows.Name, myrows.Age, random.val
FROM myrows
LEFT JOIN random ON myrows.rank = random.rank;