У меня есть запросполучить только одну строку для каждого ID с наивысшим значением
SELECT
*
FROM
mgr.MF_AGREEMENT_LGR TABLE1
INNER JOIN
(SELECT
MAX(VALUE_DATE) AS VALUE_DATE,
REGISTRATION_NO AS REGISTRATION_NO
FROM
mgr.MF_AGREEMENT_LGR
GROUP BY
REGISTRATION_NO) AS TABLE2 ON TABLE1.REGISTRATION_NO = TABLE2.REGISTRATION_NO
WHERE
TABLE1.VALUE_DATE = TABLE2.VALUE_DATE
AND TABLE1.TRX_CODE = 'LCLR'
ORDER BY
TABLE1.REGISTRATION_NO
Это возвращает строки с последней датой для каждого REGISTRATION_CODE
. Некоторые из них имеют три или более результата для каждого REGISTRATION_CODE
, потому что на одной и той же дате оно имеет более одной транзакции.
Кроме того, каждая строка имеет поле DOC_NO
.
Мой вопрос: как я могу получить только одну строку от каждого REGISTRATION_CODE
с максимальным DOC_NO
.
К сожалению, DOC_NO
является varchar.
Пример значения для этого поля является: Amort 1, Amort 12, Amort 5
Если эти примеры в одном REGISTRATION_CODE
, нужно только строку с наивысшим Аморт, который является Amort 12.
Я использую SQL Server 2000.
Есть ли способ изменить ваши таблицы? Получение наивысшего числа из столбца типа данных varchar будет сложным. Если бы вы знали максимальную длину чисел для 'DOC_NO', вы могли бы технически« SELECT RIGHT (DOC_NO, 2) », например, затем передать это как int и упорядочить по' DESC'. – Phoenix