Если я правильно вас понимаю, для каждого заданного идентификатора может быть несколько дат, а для указанной даты - несколько текстов.
Если вы используете Sql Server 2005
Я получил это на работу
DECLARE @Table TABLE(
ID INT,
DDATE DATETIME,
VAL VARCHAR(MAX)
)
INSERT INTO @Table (ID,DDATE,VAL) SELECT 1, '01 Jan 2009', '1'
INSERT INTO @Table (ID,DDATE,VAL) SELECT 1, '01 Feb 2009', '2'
INSERT INTO @Table (ID,DDATE,VAL) SELECT 1, '01 Feb 2009', '3'
INSERT INTO @Table (ID,DDATE,VAL) SELECT 2, '01 Jan 2009', '4'
SELECT ID,
DDATE,
VAL,
ROWNUMBER
FROM (
SELECT t.ID,
t.DDATE,
t.VAL,
ROW_NUMBER() OVER (PARTITION BY t.ID ORDER BY DDATE) ROWNUMBER
FROM @Table t INNER JOIN
(
SELECT ID,
MAX(DDATE) AS MAXDATE
FROM @Table
GROUP BY ID
) md ON t.ID = md.ID
AND t.DDATE = md.MAXDATE
) RowNumber
WHERE RowNumber.ROWNUMBER = 1