我只需要获取结果集的第一条记录(因为我需要上次日期),目前我从这个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
答案 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
但全局问题是另一个问题,关于如何修复查询以仅检索正确的值。