只选择一条记录

时间:2012-03-21 15:39:16

标签: sql db2

我只需要获取结果集的第一条记录(因为我需要上次日期),目前我从这个sql tring获得了这个结果集:

SELECT BCACC,FLDAT
FROM ANAGEFLF
ORDER BY FLDAT DESC

我看到了这条记录:

A.M.T. AUTOTRASPORTI SRL        20080220
A.M.T. AUTOTRASPORTI SRL        20080123
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

3 个答案:

答案 0 :(得分:3)

假设它们是唯一涉及的字段,您只需执行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 :(得分:1)

select BCACC, max(FLDAT)
from ANAGEFLF
group by BCACC

答案 2 :(得分:0)

问题第一部分“我只需要获取结果集的第一条记录”的答案是:

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

但全局问题是另一个问题,关于如何修复查询以仅检索正确的值。