按照参考,操作和日期顺序排列SQL输出基于参考组中第一条记录的日期

问题描述

这已经困扰了我一段时间了。我觉得这应该是可能的(而且相当容易),但是我似乎无法理解该怎么做。

基本上(用英语)我想返回今天的所有操作,并按DOC_TRACKING_ID分组(即,所有相同的参考号 并在日期(该参考组的第一个操作-ACTION_DTM)的日期之内按操作顺序(使用sortseq)进行排序。数据全都放在一个表中。

我希望这是有道理的。

那么,我现在得到的是什么。

ACTION   ACTION_DTM             DOC_NAME                             DOC_TRACKING_ID           sortseq
FS_READ  2020-08-24 13:35:40    INVOIC_23846227.imp                  808331174204615cenode1    1
ARC_PRE  2020-08-24 13:35:40    INVOICE_20200824134740_8598875.imp   808331174204615cenode1    2
TRANSL   2020-08-24 13:35:41    -                                    808331174204615cenode1    3
ARC_POST 2020-08-24 13:35:41    INVOICE_20200824134740_8598875.edi   808331174204615cenode1    4
FTP_UP   2020-08-24 13:40:38    INVOICE_202008241347408598875.edi    808331174204615cenode1    5

FS_READ  2020-08-24 12:32:44    ORDERS_20180419-161546-373.edi       8634751742006e629node1    1
ARC_PRE  2020-08-24 12:32:46    ORDERS_20200824123245_8598307.xml    8634751742006e629node1    2
TRANSL   2020-08-24 12:32:46    -                                    8634751742006e629node1    3
ARC_POST 2020-08-24 12:32:46    ORDERS_20200824123245_8598307.ixml   8634751742006e629node1    4
FTP_UP   2020-08-24 12:38:38    ORDERS_202008241232458598307.xml     8634751742006e629node1    5

我想要得到的..

ACTION   ACTION_DTM             DOC_NAME                              DOC_TRACKING_ID           sortseq
FS_READ  2020-08-24 12:32:44    ORDERS_20180419-161546-373.edi        8634751742006e629node1    1
ARC_PRE  2020-08-24 12:32:46    ORDERS_20200824123245_8598307.xml     8634751742006e629node1    2
TRANSL   2020-08-24 12:32:46    -                                     8634751742006e629node1    3
ARC_POST 2020-08-24 12:32:46    ORDERS_20200824123245_8598307.ixml    8634751742006e629node1    4
FTP_UP   2020-08-24 12:38:38    ORDERS_202008241232458598307.xml      8634751742006e629node1    5

FS_READ  2020-08-24 13:35:40    INVOIC_23846227.imp                   808331174204615cenode1    1
ARC_PRE  2020-08-24 13:35:40    INVOICE_20200824134740_8598875.imp    808331174204615cenode1    2
TRANSL   2020-08-24 13:35:41    -                                     808331174204615cenode1    3
ARC_POST 2020-08-24 13:35:41    INVOICE_20200824134740_8598875.edi    808331174204615cenode1    4
FTP_UP   2020-08-24 13:40:38    INVOICE_202008241347408598875.edi     808331174204615cenode1    5

我在两个输出中都添加了一个空白行,以使查看分组更加容易。我不需要在输出中。

到目前为止,

SQL。

select ta.ACTION,ta.ACTION_DTM,ta.DOC_NAME,DOC_TRACKING_ID,case 
      when ta.ACTION = 'FTP_DL'   then '1'
      when ta.ACTION = 'ARC_PRE'  then '2'
      when ta.ACTION = 'TRANSL'   then '3'
      when ta.ACTION = 'ARC_POST' then '4'
      when ta.ACTION = 'FTP_UP'   then '5'
      when ta.ACTION = 'FAIL'     then '3'
      when ta.ACTION = 'FS_READ'  then '1'
      when ta.ACTION = 'FS_WRITE' then '5'
  end as sortseq
 from DOC_TRACKING_ACTION ta
where ta.DOC_TRACKING_ID in (select distinct ta1.DOC_TRACKING_ID
                               from DOC_TRACKING_ACTION ta1
                              where ta1.ACTION_DTM >= CURRENT DATE - 0 DAYS)
order by ta.DOC_TRACKING_ID asc,sortseq;

任何帮助将不胜感激..! (当然,对代码的任何改进总是值得赞赏的。。。)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)