在基于日期的select语句中获取oracle中的自定义线性唯一id

在基于日期的select语句中获取oracle中的自定义线性唯一id,oracle,datetime,Oracle,Datetime,我有这样一个oracle表 我想在select语句中获得格式为Mon YY/unique number的自定义唯一id 结果如下所示(请参见UNIQUEORDERID列) 是否可以在select语句中实现结果? 请帮我写查询 谢谢, 萨贾德 编辑 将此转换为您的数据 select object_name ,to_char(created,'MON-YY')||'/'||row_number() over (partition by to_char(created,'MON-YY') orde

我有这样一个oracle表

我想在select语句中获得格式为Mon YY/unique number的自定义唯一id

结果如下所示(请参见UNIQUEORDERID列)

是否可以在select语句中实现结果? 请帮我写查询

谢谢, 萨贾德

编辑 将此转换为您的数据

select object_name
,to_char(created,'MON-YY')||'/'||row_number() over (partition by to_char(created,'MON-YY') order by to_char(created,'MON-YY'))
from user_objects;
试试这个-

SELECT REQUEST_ID,
       NAME_OF_TRAINING,
       APPLIED_DATE,
       to_char(APPLIED_DATE,'MON-YY') || '/' || ROW_NUMBER over (partition by to_char(APPLIED_DATE,'MON-YY') order by to_char(APPLIED_DATE,'MON-YY')) AS UNIQUEORDERID
FROM tablename;

这将只是在“MON-YY”上加上requestid…我想要的是每个月从001开始…所以我不希望它是547年4月12日,但应该是001年4月12日,等等…Junaid..这将再次返回我一个序列..即4月12日1,2,3。。。。。但我希望结果是基于月份的..即下个月是2001年5月12日,而不是2003年5月12日(根据您的查询),您将必须获取(分区到字符(应用日期,'MON-YY'))上的行号()。但是我认为这会妨碍你的表现。如果你创造了一个月的记录,你预计会发生什么?它可以更改该行的所有其他行的IDmonth@A.B.Cade->它不会改变…因为日期是按顺序排列的..假设你插入另一行:<代码> 560,C++,4/15/2012 10:32 ,然后得到ID代码> APR-12/001 ,记录547现在是代码> APR-12/002 对该记录的所有引用都是错误的。我看不出您将如何使用在SELECT上生成的ID…是的..我的代码将插入的日期限制为上一个日期..它始终使用当前日期时间..并且生成的ID仅用于在UI中显示(根据客户要求)…在代码中,我们将使用实际的请求\u id..如果后端没有进行数据更改..结果将始终是sameY3K问题,马上出现:)
SELECT REQUEST_ID,
       NAME_OF_TRAINING,
       APPLIED_DATE,
       to_char(APPLIED_DATE,'MON-YY') || '/' || ROW_NUMBER over (partition by to_char(APPLIED_DATE,'MON-YY') order by to_char(APPLIED_DATE,'MON-YY')) AS UNIQUEORDERID
FROM tablename;
SELECT request_id,
       name_of_training,
       applied_date,
       to_char(applied_date,'MON-YY') || 
               '/' || 
               to_char(row_number() over (partition by to_char(applied_date,'MON-YY'), '000')
               ) AS UNIQUEORDERID
FROM tablename;