问题描述
你好,汤姆,
我正在进行一个当前的项目,其中需要计算某个表中的某一列。
基表为:
数据如下所示:
现在的要求是:对于AAA、BBB或BBB的组合, AAA我需要计算最小值(ACTFED_D)。
即,对于上述场景,我应该得到如下输出:
如何使用SQL或PL-SQL有效地完成此任务?
谢谢,
苏德哈萨特瓦
我正在进行一个当前的项目,其中需要计算某个表中的某一列。
基表为:
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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




