转换sql查询

时间:2010-04-26 10:18:30

标签: sql ms-access

我在sql中使用了这个查询,请将此查询转换为用于访问数据库。

表结构是UserID,Username,LogDate,LogTime

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 

1 个答案:

答案 0 :(得分:1)

AFAIK,Access不支持WITH。您必须为TableWithRowId使用临时表(假设存在等效的ROW_NUMBER(),可能不存在)。其他表格,您只需转换为子选择。