время начала и время начала запроса - PullRequest
0 голосов
/ 24 апреля 2010

У меня есть следующие данные и я использую 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 в запросе, но она показывает ошибку

1 Ответ

1 голос
/ 25 апреля 2010

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


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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...