暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 日期列的最小值

askTom 2014-11-28
1067

问题描述

你好,汤姆,

我正在进行一个当前的项目,其中需要计算某个表中的某一列。

基表为:

create table main_data
(from_value varchar2(10),
to_value varchar2(10),
activity_date date
);

insert into main_data
values('AAA','BBB',sysdate);

insert into main_data
values('BBB','AAA',sysdate-1);

insert into main_data
values('CCC','AAA',sysdate-3);

insert into main_data
values('AAA','CCC',sysdate-2);

commit;


数据如下所示:

SQL> select * from main_data;

FROM_VALUE TO_VALUE   ACTIVITY_DATE
---------- ---------- ---------
AAA        BBB        28-NOV-14
BBB        AAA        27-NOV-14
CCC        AAA        25-NOV-14
AAA        CCC        26-NOV-14


现在的要求是:对于AAA、BBB或BBB的组合, AAA我需要计算最小值(ACTFED_D)。

即,对于上述场景,我应该得到如下输出:

FROM_VALUE TO_VALUE   MIN(ACTIVITY_DATE)
---------- ---------- ---------
AAA        BBB        27-NOV-14
AAA        CCC        25-NOV-14


如何使用SQL或PL-SQL有效地完成此任务?

谢谢,
苏德哈萨特瓦

专家解答


ops$tkyte%ORA11GR2> select least( from_value, to_value ), greatest( from_value, to_value ), min(activity_date)
  2    from main_data
  3   group by  least( from_value, to_value ), greatest( from_value, to_value )
  4   order by 1, 2
  5  /

LEAST(FROM GREATEST(F MIN(ACTIV
---------- ---------- ---------
AAA        BBB        27-NOV-14
AAA        CCC        25-NOV-14


「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论