基于现有列派生其他列
Posted
技术标签:
【中文标题】基于现有列派生其他列【英文标题】:Derive additional columns based on existing column 【发布时间】:2018-08-24 20:02:26 【问题描述】:我有 10 列的 500 条记录。基于日期列,我想创建两个额外的列(date_id, record_id)
。日期列是唯一的。
Date_id 列值应为:F + date + unique identifier
。
Record_id 列值应为:C + date + unique identifier
。
例如:
Date
15Jul2017
预期输出:
Date date_id record_id
--------------- -------------------------- --------------
15Jul2017 F+15Jul2017+1 C+15Jul2017+1
15Jul2017 F+15Jul2017+2 C+15Jul2017+2
...so on until 500 records
15Jul2017 F+15Jul2017+500 C+15Jul2017+500
【问题讨论】:
你是如何存储日期的?为什么不作为约会? 这违反了 1NF,您可能只想为 id 添加一列。 @GordonLinoff 我有一个值存储为 2017-07-15 【参考方案1】:你可以使用row_number()
:
select t.date,
('F+' || date || '+' || row_number() over (order by date)) as date_id,
('c+' || date || '+' || row_number() over (order by date)) as record_id
from t;
如果您的日期确实存储为日期而不是字符串,那么您可能需要将其格式化为您喜欢的格式。
【讨论】:
啊...我总是忘记row_number()
函数。以上是关于基于现有列派生其他列的主要内容,如果未能解决你的问题,请参考以下文章
oracle forms builder pl/sql - 访问从其他列派生的列