2010-04-24 2 views
0

я следующие данные и с помощью SQL Server 2005время начала и время начала запроса

UserID UserName LogTime LogDate 
1  S   9:00 21/5/2010 
1  S   10:00 21/5/2010 
1  S   11:00 21/5/2010 
1  S   12:00 21/5/2010 
1  S   14:00 21/5/2010 
1  S   17:00 21/5/2010 

Необходимость выхода, как: -

1  S  21/5/2010 9:00 21/5/2010 10:00 
1  S  21/5/2010 11:00 21/5/2010 12:00 
1  S  21/5/2010 14:00 21/5/2010 17:00 

Я использовал функцию row_number в запросе, но его показ ошибок

+0

Похоже, что вы спариваетесь с входами/выходами. Есть ли способ определить, является ли конкретная строка логином или выходом из системы? – Andomar

+0

Можете ли вы показать нам свой код, который у вас был, и рассказать нам, что ** точно ** ошибка была ?? –

ответ

1

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


DECLARE @YourTable TABLE(UserId int, UserName varchar(10), LogTime time, LogDate date) 

insert @YourTable values(1,'S','9:00','5/21/2010') 
insert @YourTable values(1,'S','10:00','5/21/2010') 
insert @YourTable values(1,'S','11:00','5/21/2010') 
insert @YourTable values(1,'S','12:00','5/21/2010') 
insert @YourTable values(1,'S','14:00','5/21/2010') 
insert @YourTable values(1,'S','17:00','5/21/2010'); 

WITH 
    [TableWithRowId] as 
    (SELECT ROW_NUMBER() OVER(ORDER BY UserId,LogDate,LogTime) RowId, * FROM @YourTable), 
    [OddRows] as 
    (SELECT * FROM [TableWithRowId] WHERE rowid % 2 = 1), 
    [EvenRows] as 
    (SELECT *, RowId-1 As OddRowId FROM [TableWithRowId] WHERE rowid % 2 = 0) 
SELECT 
    [OddRows].UserId, 
    [OddRows].UserName, 
    [OddRows].LogDate, 
    [OddRows].LogTime, 
    [EvenRows].LogDate, 
    [EvenRows].LogTime 
FROM 
    [OddRows] LEFT JOIN [EvenRows] 
    ON [OddRows].RowId = [EvenRows].OddRowId 
Смежные вопросы