2016-08-18 2 views
1

Table with unsorted dataSQL Как группировать данные вместе

Таблица с несортированными данными показывает данные я получаю сейчас. Что мне нужно сделать, так это объединить имена пользователей. Так что это будет выглядеть как картинка «Таблица со отсортированными данными». Пожалуйста, дайте мне знать, если мой вопрос неясен. Я не очень хорошо объясняю вещи.

Table with sorted data

+1

Покажите, как выглядит ваш текущий запрос. Если возможно: a ORDER BY UserName, isNull (loggedOn, somedate) – DaniDev

+0

Глядя на ваши данные - пользователь может зайти в систему несколько раз, прежде чем выходить один раз. Это верно? – Nicarus

+0

Да, это правильно @Nicarus – Jon

ответ

0

на основе ваших комментариев, кажется, что пользователь может войти в несколько раз, не выходя из. Нижеприведенный запрос захватит следующее скорейшее время выхода для каждого пользователя после каждого входа. Без идентификатора сеанса, похоже, не существует способа гарантировать, какое время выхода из системы связано с каждым входом в систему.

Select UserName, 
    LoggedOn, 
    (select min(LoggedOut) from dbo.MyTable T1 where T.UserName = T1.UserName and T.LoggedOn <= T1.LoggedOut) 
from dbo.MyTable T 
where LoggedOn is not null 
0

В Sql данных всегда показывает без группы, но приложение или использование уведомит повторяющееся поле для группы это так же, как вы хотите сделать.

+3

[Как ответить] (http://stackoverflow.com/help/how-to-answer) может помочь вам написать ответы, которые будут сохранены. – zhon

0

Это даст вам то, что вы ищете, я верю. если вы не заботитесь о заказе, кроме группировки имени пользователя, вы можете забрать «, LoggedOn» после предложения Order by. Вы также можете поместить другие параметры по первому порядку по полю, и он будет заказывать ваш результат сначала по имени пользователя, затем по входу, затем по x, затем по y ..

Надеюсь, это поможет.

select UserName, LoggedOn, LoggedOut 
from dbo.Table 
Order by Username, LoggedOn 
Смежные вопросы