получение максимального количества записей из sqlserver - PullRequest
0 голосов
/ 10 марта 2009

Я уже некоторое время работаю с этим. поэтому решил попросить и получить некоторую помощь.

У меня есть две таблицы как таковые:

tblTrans: (DocNumber field is always unique)

DocNumber       TransDate      userId
66-FF-GHIP      03-05-08       someUser
55-RT-JHTP      03-09-09       someOtherUser
77-AF-KPWT      05-08-09       userId1
09-IO-TEAG      04-08-09       thisUser


tblTransDet: (productIdCode field + DocNumber fields are always unique)
DocNumber       ProductIdCode      TransStatus   
66-FF-GHIP      4124               Approved
66-FF-GHIP      2124               Pending
66-FF-GHIP      2340               Approved
77-AF-KPWT      4124               Approved
55-RT-JHTP      4124               Pending
09-IO-TEAG      2124               Pending

Как видите. ProductIdCode 4124 повторяется несколько раз в tblTransDet, но сочетание productIdCode и DocNumber всегда уникально

Как я могу получить docnumber и productID ... на основе docNumber с самым высоким значением transDate.

Итак, в этом примере. окончательный результат будет

77-AF-KPWT    4124
09-IO-TEAG    2124
66-FF-GHIP    2340

Я бы изменил будущее таблицы, если бы мог: (

Ответы [ 3 ]

1 голос
/ 10 марта 2009

Использовать связанный подзапрос - это не проверено:

SELECT
   d.DocNumber, d.ProductId, t.TransDate
FROM
   tblTransDet d, tblTrans t
WHERE
   d.DocNumber = t.DocNumber
AND
   t.TransDate = (SELECT MAX( TransDate) FROM tblTrans
                   WHERE DocNumber = d.DocNumber)
0 голосов
/ 10 марта 2009
SELECT  *
FROM    (
        SELECT  d.DocNumber, d.ProductId, t.TransDate,
        ROW_NUMBER() OVER (PARTITION BY d.DocNumber, d.ProductId ORDER BY TransDate DESC) AS rn
        FROM   tblTransDet d, tblTrans t
        WHERE  t.DocNumber = d.DocNumber
        )
WHERE rn = 1
0 голосов
/ 10 марта 2009

вы можете использовать подзапрос

WHERE Detail.Date = (SELECT MAX(Date) FROM TransDet)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...