2016-09-28 48 views
2

我有見下表:
SQL查詢說VAL1和val2

  ID DateVal  纈氨酸
1/1/2010  一個
2/2/2010   b
2010/3/3  ç
4/4/2010   d
2010年5月5日 ë
2010年6月6日 ˚F
2010年7月7日 克
2010年8月8日 ħ
2010年9月9日 我

我需要下面:

  ID VAL1   VAL2
       一個       Ç
        d        ˚F
    克       我

即在'Val1'列中的最後日期的Val和'Val2'列中的Val和最大日期。
什麼是所有查詢來實現這個輸出,哪一個最簡單?

回答

3

DDL

with T as (
select 1 as id, to_date('01.01.2010','DD.MM.YYYY') dt, 'a' val 
from dual union all 
select 1 as id, to_date('02.02.2010','DD.MM.YYYY') dt, 'b' val 
from dual union all 
select 1 as id, to_date('03.03.2010','DD.MM.YYYY') dt, 'c' val 
from dual union all 
select 2 as id, to_date('04.04.2010','DD.MM.YYYY') dt, 'd' val 
from dual union all 
select 2 as id, to_date('05.05.2010','DD.MM.YYYY') dt, 'e' val 
from dual union all 
select 2 as id, to_date('06.06.2010','DD.MM.YYYY') dt, 'f' val 
from dual union all 
select 3 as id, to_date('07.07.2010','DD.MM.YYYY') dt, 'g' val 
from dual union all 
select 3 as id, to_date('08.08.2010','DD.MM.YYYY') dt, 'h' val 
from dual union all 
select 3 as id, to_date('09.09.2010','DD.MM.YYYY') dt, 'i' val 
from dual) 

代碼

select 
    id, 
    max(val) keep (dense_rank first order by dt) as maxs, 
    max(val) keep (dense_rank first order by dt desc) as mins from t 
group by id 
+0

嘿,非常感謝!它工作得很好:) – P3M

-1
with t1 as 
(select ID, min(dtval) dtval, min(val) val from date_val group by ID), 

t2 as 
(select ID, max(dtval) dtval, max(val) val from date_val group by ID) 

select t1.id, t1.val val1, t2.val val2 from t1 join t2 on t1.id = t2.id; 
+0

這不會做問題的問題。 – jva

+0

這個問題是由我自己問的,我試過這個查詢,它返回了我想要的結果作爲我的問題輸出相同的表..你認爲是錯誤的查詢? @jva – P3M

+0

同一張桌子是巧合。嘗試將Val改爲(c,b,a)前3行而不是(a,b,c)並再次測試。 – jva