2012-03-21 58 views
5

我需要獲取只有第一個記錄(因爲我需要最後日期)的結果集,此刻我已經從這個SQL特林這個結果集只有一條記錄:採取的選擇

SELECT BCACC,FLDAT 
FROM ANAGEFLF 
ORDER BY FLDAT DESC 

,我看到這個紀錄:

A.M.T. AUTOTRASPORTI SRL  20080220 
A.M.T. AUTOTRASPORTI SRL  2008
A.M.T. AUTOTRASPORTI SRL  20070731 
APOFRUIT ITALIA     20080414 
APOFRUIT ITALIA     20080205 
APOFRUIT ITALIA     20071210 
APOFRUIT ITALIA     20070917 
APOFRUIT ITALIA     20070907 

現在我需要爲每BCACC只有一條記錄(第一),我想借此結果集:

A.M.T. AUTOTRASPORTI SRL  20080220 
APOFRUIT ITALIA     20080414 

我只是嘗試它BCACC組,但我收到一個SQL錯誤,我在工作,在DB2 ibmI

回答

2

假設他們是唯一有關的領域,你可以做一個GROUP BY

SELECT 
    BCACC, 
    MAX(FLDAT) AS FLDAT 
FROM 
    ANAGEFLF 
GROUP BY 
    BCACC 

但是,如果您有需要,那麼你只要加入表的這個回爲一個子查詢等領域...

SELECT 
    ANAGEFLF.* 
FROM 
    ANAGEFLF 
INNER JOIN 
(
    SELECT 
    BCACC, 
    MAX(FLDAT) AS FLDAT 
    FROM 
    ANAGEFLF 
    GROUP BY 
    BCACC 
) 
    AS map 
    ON map.BCACC = ANAGEFLF.BCACC 
    AND map.FLDAT = ANAGEFLF.FLDAT 
1
select BCACC, max(FLDAT) 
from ANAGEFLF 
group by BCACC 
0

的第一部分答案你的問題:「我需要獲取結果集僅第一條記錄」是:

SELECT BCACC,FLDAT 
FROM ANAGEFLF 
ORDER BY FLDAT DESC 
FETCH FIRST 1 ROW ONLY 

但全球問題是另一個關於如何查詢固定到只檢索正確的價值觀。

+0

停止對語法挑剔。基於示例輸入集和示例輸出集,對於OP的含義已經很清楚了。 – MatBailie 2012-03-21 22:25:15