基于现有列派生其他列

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 - 访问从其他列派生的列

根据现有结果获取派生状态列的最佳方法是啥

为啥我不能使用引用 SQL 中其他列的 checkConstraint 将列添加到现有表

sql 根据具有现有值的其他列创建列

使用其他现有列 Spark/Scala 添加新列

Python pandas 通过对现有列进行分组来创建其他数据框列