2014-09-03 4 views
0

Hii Я хотел получить различные FireUPRN, но с самой новой датой (FRADate).SQL Получить отличительный ID, но с самой новой датой

Издание:

Я получаю ошибку -

*Msg 241, Level 16, State 1, Line 4 
Conversion failed when converting datetime from character string. 
Warning: Null value is eliminated by an aggregate or other SET operation.* 

Код:

SELECT * 

FROM TblFire 
inner join (
SELECT Max(FRADate) as FireDateID, 
FRADate 
FROM TblFire GROUP BY FRADate) 
FireDateID 
ON FireDateID.FireDateID = TblFire.FireUPRN 
+0

Пожалуйста, отметьте свой вопрос в базе данных, которую вы используете. –

+0

Добавлено (в этом случае в 2005 году). – indofraiser

+0

Возможный дубликат [Получение последней записи в каждой группе] (http://stackoverflow.com/questions/1313120/retrieving-the-last-record-in-each-group) – Bulat

ответ

1

Ваш запрос совершенно запутался, принимая макс столбца даты и назвав его идентификатор , Без сервировки стола, я думаю, что это то, что вы на самом деле хотите:

SELECT f.* 
FROM TblFire f INNER JOIN 
    (SELECT FireUPRN, MAX(FRADate) as FRADate 
     FROM TblFire 
     GROUP BY FireUPRN 
    ) fmax 
    ON f.FRADate = fmax.FRADate and f.FireUPRN and fmax.FireUPRN; 
+0

Когда я запускаю SELECT DISTINCT FireUPRN FROM TblFire е INNER JOIN (SELECT Max (FRADate) как FRADateID, FRADate оТ TblFire GROUP BY FRADate ) FMAX ON f.FireUPRN = fmax.FRADateID я получаю ту же ошибку «Преобразование фэйл при преобразовании datatime из строки символов) – indofraiser

1

Попробуйте это: (ID это ваш PrimaryKey от TblFire)

SELECT * FROM TblFire t1 
JOIN 
(
    SELECT ID, MAX(FRADate) AS FRADate 
    FROM TblFire 
    WHERE FRADate is not null 
    GROUP BY FRADate 
) t2 
ON T1.FRADate = t2.FRADate 
AND t1.ID = t2.ID 
+0

к сожалению человек, который его написал (а не я), не имел поля идентификатора. – indofraiser

+0

есть другое уникальное поле? –

+0

Нет уникального поля, но я могу добавить его - просто скопировав его с сервера на локальный ПК, тогда я могу играть с таблицей. – indofraiser

0

Иногда это проще, чем кажется ...

SELECT FireUPRN, Max(FRADate) as FRADate 
FROM TblFire 
GROUP BY FireUPRN