Oracle11g 如何通过转换然后重复下一行将行转换为列?

Oracle11g 如何通过转换然后重复下一行将行转换为列?,oracle11g,Oracle11g,表包含以下列和数据: Id | Date 1 | 04/09/2014 13:00:00 1 | 04/10/2014 15:00:00 1 | 04/12/2014 16:00:00 1 | 04/13/2014 18:00:00 2 | 04/11/2014 13:00:00 2 | 04/12/2014 15:00:00 2 | 04/12/2014 16:00:00 我需要获得每个Id的每个垂直对,并将其转换为水平视图,结果如下所示: | ID |

表包含以下列和数据:

Id | Date 1 | 04/09/2014 13:00:00 1 | 04/10/2014 15:00:00 1 | 04/12/2014 16:00:00 1 | 04/13/2014 18:00:00 2 | 04/11/2014 13:00:00 2 | 04/12/2014 15:00:00 2 | 04/12/2014 16:00:00 我需要获得每个Id的每个垂直对,并将其转换为水平视图,结果如下所示:

| ID | DATE1 | DATE2 | | 1 | April, 09 2014 13:00:00 | April, 10 2014 15:00:00 | | 1 | April, 10 2014 15:00:00 | April, 12 2014 16:00:00 | | 1 | April, 12 2014 16:00:00 | April, 13 2014 18:00:00 | | 1 | April, 13 2014 18:00:00 | (null) | | 2 | April, 11 2014 13:00:00 | April, 12 2014 15:00:00 | | 2 | April, 12 2014 15:00:00 | April, 12 2014 16:00:00 | | 2 | April, 12 2014 16:00:00 | (null) | 试试这个:

select id, date date1, (select date 
                        from data_table t2 
                        where t2.ROWID>t1.ROWID and t2.date>t1.date and ROWNUM=1) date2
from data_table t1

我不是Oracle人员,给定的解决方案可能有错误,您还需要根据需要格式化日期字段。

我有sql server解决方案,并尝试将其转换为Oracle,但无法感谢您,此解决方案无法按预期工作,它跳过了一些日期。请您将输出粘贴到,因为我没有在这里安装oracle:我没有必要的声誉来回答我的问题,通过显示结果:我不是在要求发布答案,伙计。您只需将输出粘贴到pastebin中并给我一个链接,这样我就可以检查我的查询有什么问题。这将无法工作t2.id=t1.id,因为它将在t1和t2之间进行内部联接。从您的预期输出中,我了解到的是,您想用表的下一行来度量行,对吗?为此,我比较了t2.ROWID>t1.ROWID