Это мое первое сообщение, потому что я обычно могу найти ответы, просмотрев другие вопросы здесь, но я попробовал следующие инструкции по нескольким предложениям, например this, this, this или this, но безрезультатно.SQL-MAX возвращает несколько результатов при запросе более одного столбца
В конечном итоге я хочу использовать мой запрос для объединения двух таблиц (в MS Dynamics AX) и показать последнюю дату выхода для пользователей, а также различные другие детали, которые я вытащил из нескольких таблиц. Тем не менее, в первом случае, когда я попытался получить последнюю регистрационную дату, у меня появилось тысячи столбцов вместо пары сотен, которые я ожидал (... и получил без последнего столбца даты).
Но для того, чтобы сделать его простым, поскольку такое же поведение проявляется при простое вытаскивание идентификатора пользователя и последнего выхода из даты из одной таблицы, это мой запрос (я вернул только правые три символа имени пользователя для анонимного данные):
Use MicrosoftDynamicsAX
SELECT MAX(LOGOUTDATETIME) as LastLoggedOut,
RIGHT(USERID,3) as UserName
FROM SYSUSERLOG
GROUP BY LOGOUTDATETIME,
USERID
ORDER BY USERID
От этого я получаю 17,632 строк вернулись, так как она возвращает каждый экземпляр пользователя со всей последней регистрировались от даты!
Например, это небольшая выборка результатов, возвращаемых этим запросом:
LastLoggedOut UserName
2015-09-03 07:40:36.000 nts
2015-09-03 07:43:20.000 nts
2015-09-03 07:44:10.000 nts
2015-09-03 07:47:44.000 nts
2015-09-03 07:56:33.000 nts
2015-09-03 08:05:11.000 nts
2015-09-04 02:18:58.000 nts
2015-09-15 01:23:59.000 nts
2015-09-15 06:27:13.000 nts
2015-09-15 06:59:44.000 nts
2015-09-15 07:01:33.000 nts
Принимая во внимание, что я искал бы больше, как это:
LastLoggedOut UserName
6/10/2016 2:14:57 nbr
6/10/2016 2:14:22 ulc
6/10/2016 2:14:18 nne
6/10/2016 2:14:10 nci
6/10/2016 2:13:30 hae
6/10/2016 2:12:46 001
6/10/2016 2:11:31 idb
6/10/2016 2:10:38 rin
Я попытался заменяя предложение WHERE для HAVING, а также пытаясь CTE и вложенный SELECT в предложение WHERE, но мои знания SQL немного размыты, и я надеялся, что один из вас умных людей сможет оказать некоторую помощь.
Ta
Dan
Большое спасибо. Алекс, мне нужно сделать немного исследований в GROUP BY, это поймало меня пару раз! –
Без проблем, легко исправить. –