Фильтр SQL CE по дате вступления в силу с использованием SubSelect - PullRequest
0 голосов
/ 18 марта 2011

Я пытаюсь отфильтровать по дате вступления в силу в моей базе данных SQLce (версия 3.5) в C #. Вот мой запрос:

SELECT        FirstName, LastName, HomeID, ConditionID, ADate, OwnerID
FROM            Sys_HomeOwner
WHERE        (ADate =
                             (SELECT        MAX(ADate) AS Expr1
                               FROM            Sys_HomeOwner AS Sys_HomeOwner_1))

Ошибка возвращается:

Произошла ошибка при разборе запроса. (номер строки токена = 1, строка токена смещение = 118, токен по ошибке = SELECT]

Я делал некоторые запросы, и кажется, что в SQLCE можно делать подвыборы. Если я вытаскиваю вложенный выбор, он в любом случае работает нормально для таблицы в целом, вытягивая максимальную дату.

Что я делаю не так?

спасибо за помощь.

Ответы [ 2 ]

0 голосов
/ 18 марта 2011

Вы упомянули получение максимумов каждой строки, я думаю, вам нужно использовать GROUP BY для этого.

Как насчет:

SELECT FirstName, LastName, NameID, ConditionID, ADate, OwnerID
FROM Sys_HomeOwner h
LEFT OUTER JOIN (SELECT MAX(ADate) AS maxdate, HomeID
                 FROM Sys_HomeOwner
                 GROUP BY HomeID) AS effectiveDates
     ON h.HomeID = effectiveDates.HomeID
WHERE h.ADate = effectiveDates.maxdate

Предполагая, что вы хотите получить самые последние даты длякаждый HomeID

0 голосов
/ 18 марта 2011
SELECT TOP 1 FirstName, LastName, HomeID, ConditionID, ADate, OwnerID 
FROM Sys_HomeOwner 
ORDER BY ADate DESC
...