взять только одну запись выбора - PullRequest
6 голосов
/ 21 марта 2012

Мне нужно получить только первую запись (потому что мне нужна последняя дата) набора результатов, на данный момент у меня есть этот набор результатов из этой строки sql:

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 ]

3 голосов
/ 21 марта 2012

Предполагая, что они являются единственными полями, которые вы используете, вы можете просто сделать 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 голос
/ 21 марта 2012
select BCACC, max(FLDAT)
from ANAGEFLF
group by BCACC
0 голосов
/ 21 марта 2012

Ответ на первую часть вашего вопроса «Мне нужно получить только первую запись набора результатов»:

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

Но глобальный вопрос был другим, о том, как исправить запрос, чтобы получить толькоправильные значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...