J
jcolor
Всем, привет
Подскажите, кто знает, как можно красиво написать запрос по выбору данных из таблицы:
есть таблица
DatеRequest - дата работы
UserName - имя пользователя
DocName - название док-та, с кот. пользователь работал за эту дату
В эту таблицу заносятся данные по работе пользователя с документами.
Необходимо выбрать последнюю дату работы каждого пользователя и последний открываемый им документ.
Пробовала сделать след. образом:
Но таким образом запрос выполняется длительное время,
какие еще есть варианты для выбора последних данных из таблицы??
Подскажите, кто знает, как можно красиво написать запрос по выбору данных из таблицы:
есть таблица
DatеRequest - дата работы
UserName - имя пользователя
DocName - название док-та, с кот. пользователь работал за эту дату
В эту таблицу заносятся данные по работе пользователя с документами.
Необходимо выбрать последнюю дату работы каждого пользователя и последний открываемый им документ.
Пробовала сделать след. образом:
Код:
DECLARE @T1 TABLE(UserName CHAR(100), DatеRequestMax DATETIME)
DECLARE @T2 TABLE(UserName CHAR(100), DateRequest DATETIME, DocName CHAR(100))
-- выбираю последнюю дату работы каждого пользователя
INSERT INTO @T1(UserName, DatеRequestMax)
SELECT UserName, MAX(DateRequest) FROM TableName
GROUP BY UserName
-- выбираю название открываемых документов
INSERT INTO @T2(UserName, DateRequest, DocName)
SELECT UserName, DateRequest, DocName FROM TableName
GROUP BY UserName, DateRequest, DocName
-- объединяю две таблицы, чтоб получить последний открываемый документ
SELECT a.UserName, a.DatеRequestMax, b.DocName FROM @T1 AS a
INNER JOIN @T2 AS b ON(a.UserName LIKE b.UserName AND a.DatеRequestMax LIKE b.DateRequest)
ORDER BY a.UserName
Но таким образом запрос выполняется длительное время,
какие еще есть варианты для выбора последних данных из таблицы??