我有表像如下從3列顯示最小值
**Date col1 col2 col3**
1-jan-2016 -98 25 15
19-jan-2016 25 -79 20
25-dec-2015 -12 24 89
我必須找到COL1,COL2,COL3最小值,並顯示該記錄的日期。
在這種情況下,我的結果應該是1-JAN-2016 -98
我有表像如下從3列顯示最小值
**Date col1 col2 col3**
1-jan-2016 -98 25 15
19-jan-2016 25 -79 20
25-dec-2015 -12 24 89
我必須找到COL1,COL2,COL3最小值,並顯示該記錄的日期。
在這種情況下,我的結果應該是1-JAN-2016 -98
您可以使用LEAST
功能
declare
cursor c1 is select date_column,least(col1, col2, col3) least_value from yourtable;
BEGIN
FOR a in c1 LOOP
dbms_output.put_line(a.date_column || ' ' || a.least_value);
end loop;
end;
你可以做簡單的SQL以及做在PLSQL這樣:
select x.date_column, x.least_value from
(select date_column, least(col1, col2, col3) least_value from yourtable) x
where x.least_value = (select min(least_value) from
(select least(col1, col2, col3) least_value from yourtable))
嗨萬斯,謝謝您回覆,但我想從表中只有一分鐘的價值,我的結果應該是(日期和最小值)1-jan-2016 -98 –
這是基本的。你可以使用min函數和一些subquerying。我更新了我的答案的sql部分 – Vance
謝謝萬斯,它的工作:) –
可以COL1之間,COL2和COL3使用最小,MIN擺脫所有行和MIN最低.... KEEP以獲取與最小相關的日期列。
with src as
(select to_date(' 1-jan-2016','dd-mon-yyyy') col_d, -98 col1, 25 col2, 15 col3 from dual union all
select to_date('19-jan-2016','dd-mon-yyyy') col_d, 25 col1, -79 col2, 20 col3 from dual union all
select to_date('25-dec-2015','dd-mon-yyyy') col_d, -12 col1, 24 col2, 89 col3 from dual)
select min(least(col1,col2,col3)) least,
min(col_d) keep (DENSE_RANK FIRST ORDER BY least(col1,col2,col3)) col_d
from src;
刪除了'plsql'標籤和重新加標籤的使用'sql'和'oracle',因爲沒有跡象表明,存儲過程(這需要PL/SQL)需要 –