读书人

请教SQL行列转换这种效果如何写

发布时间: 2013-10-09 22:26:11 作者: rapoo

请问SQL行列转换这种效果怎么写?
我知道是要进行行列转换,但是写了半天,效果不对。
这个是效果图:
请教SQL行列转换这种效果如何写
下面是数据库中的值:
请教SQL行列转换这种效果如何写
下面是我的SQL:


同一天的甲乙丙丁戊不在同一行,还有后面的begin_time不知道如何处理,麻烦大家给点提示或者帮忙写一下,谢谢。
[解决办法]
oracle没有主键 还是自己手动添加
插入时间的时候 也是自己转换的 小麻烦了点

下面是通过动态sql写出来的 有执行结果

CREATE OR REPLACE PROCEDURE T_TEST
IS
V_SQL NVARCHAR2(2000);
CURSOR CURSOR_1 IS
SELECT team_name
FROM teamtab T;

BEGIN
V_SQL := 'SELECT run_date ';
FOR V_TB IN CURSOR_1
LOOP
V_SQL := V_SQL
[解决办法]
','
[解决办法]
'MAX(DECODE(A.team_name,'''

[解决办法]
V_TB.team_name
[解决办法]
''',DECODE(TIME_ID,1,''一'',2,''二'',3,''三'',4,''四''),NULL)) AS "'
[解决办法]
V_TB.team_name
[解决办法]
'"';
END LOOP;
V_SQL := V_SQL
[解决办法]
' FROM teamtab a,runtab b' ;
V_SQL := V_SQL
[解决办法]
' WHERE A.TEAM_ID = B.TEAM_ID';
V_SQL := V_SQL
[解决办法]
' GROUP BY RUN_DATE ORDER BY RUN_DATE';
DBMS_OUTPUT.PUT_LINE(V_SQL);
--EXECUTE IMMEDIATE V_SQL;
END;


RUN_DATE 甲 乙 丙 丁 戊 己


--------------------------------------
12013/9/26一一二
22013/9/27四二三一
32013/9/28一二三四
42013/9/29一二四三
52013/9/30一二三四

读书人网 >oracle

热点推荐