2012-03-21 65 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

相关问题