我的数据如下:
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来完成吗?任何帮助将不胜感激。
答案 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;