0

我的数据如下所示:

TASK_NAME      START_DATE           END_DATE
--------------------------------------------
TASK1          01-Jan-2010       31-Mar-2010
TASK2          01-Apr-2010       01-Jul-2010
TASK3          01-Sep-2011       01-Nov-2011

我想在 Oracle 11g 中运行一个 SQL,它将输出数据如下

TASKNAME1           START1             END1          TASKNAME2    START1            END1
TASK1            01-Jan-2010       31-Mar-2010        TASK2      01-Apr-2010       01-Jul-2010

等等,这可以使用纯 11g SQL 完成吗?任何帮助都感激不尽。

4

1 回答 1

0

我没有得到你的实际要求,而是输出你的样本:

   START1             END1          TASKNAME2    START1            END1
TASK1            01-Jan-2010       31-Mar-2010        TASK2      01-Apr-2010       01-Jul-2010

-

这是我的尝试:(至少我的练习):),也许你可以使用其中的一部分:

    SELECT A.task1 taskname1, A.start_date start1, A.end_date end1, b.task2 taskname2, b.start_date start2, b.end_date end2 
FROM
         (SELECT task1, start_date, end_date
         FROM
              ( SELECT task_name, start_date , end_date FROM my_table8
              ) pivot(MAX(task_name) FOR task_name IN ('TASK1' task1,'TASK2' task2,'TASK3' task3))
    WHERE task1 IS NOT NULL)A,
    (SELECT task2, start_date, end_date
         FROM
              ( SELECT task_name, start_date , end_date FROM my_table8
              ) pivot(MAX(task_name) FOR task_name IN ('TASK1' task1,'TASK2' task2,'TASK3' task3))
    WHERE task2 IS NOT NULL)b;
于 2013-07-29T05:09:17.077 回答