ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Oracle列转行

Oracle列转行

原创 Linux操作系统 作者:dzq0371 时间:2012-06-16 20:21:13 0 删除 编辑
CREATE TABLE t_col_row(
ID INT,
c1 VARCHAR2(10),
c2 VARCHAR2(10),
c3 VARCHAR2(10));
INSERT INTO t_col_row VALUES (1, '1001', '1003', '1009');
INSERT INTO t_col_row VALUES (2, '1002', '1008', '1007');
INSERT INTO t_col_row VALUES (3, '1003', '1002', '1005');
COMMIT;

方法1:
SELECT id, 'c1' cn, c1 cv FROM t_col_row
UNION ALL
SELECT id, 'c2' cn, c2 cv FROM t_col_row
UNION ALL
SELECT id, 'c3' cn, c3 cv FROM t_col_row;

方法2(当用t_col_row表中的c1,c2,c3分别关联t_book表时):
select a.id,b.b_id,b.b_name from t_book b ,
(select t.id,wm_concat('#'||t.c1 || '#'|| t.c2 || '#' || t.c3 || '#') allid from t_col_row t where t.id=1 group by t.id)a
where instr(a.allid,'#'||b.b_id||'#')>=1

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/23009281/viewspace-733057/,如需转载,请注明出处,否则将追究法律责任。

上一篇: SGA、PGA大小设置
请登录后发表评论 登录
全部评论

注册时间:2011-07-14

  • 博文量
    52
  • 访问量
    178194