ORACLE中的Pivot任务名称,开始和结束日期记录

时间:2013-07-28 23:12:00

标签: sql oracle

我的数据如下:

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来完成吗?任何帮助将不胜感激。

1 个答案:

答案 0 :(得分: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;