Сравните новейшие строки из той же таблицы - PullRequest
0 голосов
/ 25 октября 2011

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

Я пробовал несколько решений (некоторые из которых были найдены здесь), которые включают в себя предложение OVER (PARTITION ...). К сожалению, моя версия SQL (2005) / Management Studio не оценила, какой это замечательный инструментпотому что, как только он проверяет мой код, он быстро завершает работу.

Так вот, что у меня есть:

    SELECT * FROM 
        (SELECT empID, ssn, fname, minitial, lname, email, dob, 
         gender, wkPh, maritalStatus, 
         ROW_NUMBER() OVER (PARTITION BY empID ORDER BY lastUpdate DESC)
                 AS ranking
         FROM empHistory  WHERE (benYr = 2011))
     T WHERE ranking=1

Я не дошел до сравнения двух строк, так как я неКажется, что он может собирать данные даже в течение одного года.

Есть какие-нибудь идеи о том, что происходит, или альтернативные / лучшие способы получения нужных мне данных?

РЕДАКТИРОВАТЬ: работа по переустановке SSMS, нов то же время ... будет ли этот повторно созданный запрос возвращать ту же информацию? или он будет возвращать данные только в том случае, если для данного empID более одной строки?

 SELECT empID, ssn, fname, minitial, lname, email, dob, gender, wkPh, maritalStatus, benYr FROM empHistory AS a WHERE (benYr = '2011') AND (lastUpdate = (SELECT MAX(lastUpdate) AS Expr1 FROM empHistory AS b WHERE (a.empID = empID))) 

Переустановил SSMS безрезультатно.

Однако я выполнял запрос из таблицы и обнаружил, что когда я запускаю запрос, начиная новый запрос, он работает нормально - это ожидаемый результат?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...