sql – Oracle 11g:取消激活多列并包含列名

前端之家收集整理的这篇文章主要介绍了sql – Oracle 11g:取消激活多列并包含列名前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想在我的数据集中删除多个列.这是我的数据的样子.
  1. CREATE TABLE T5 (idnum NUMBER,f1 NUMBER(10,5),f2 NUMBER(10,f3 NUMBER(10,e1 NUMBER(10,e2 NUMBER(10,h1 NUMBER(10,h2 NUMBER(10,5));
  2.  
  3. INSERT INTO T5 (IDNUM,F1,F2,F3,E1,E2,H1,H2)
  4. VALUES (1,'10.2004','5.009','7.330','9.008','8.003','.99383','1.43243');
  5. INSERT INTO T5 (IDNUM,H2
  6. VALUES (2,'4.2004','6.009','9.330','4.7008','4.60333','1.993','3.3243');
  7. INSERT INTO T5 (IDNUM,H2)
  8. VALUES (3,'10.2040','52.6009','67.330','9.5008',H2)
  9. VALUES (4,'9.20704','45.009','17.330','29.008','5.003','3.9583','1.243');
  10.  
  11. COMMIT;
  12.  
  13. select * from t5;
  14.  
  15. IDNUM F1 F2 F3 E1 E2 H1 H2
  16.  
  17. 1 10.2004 5.009 7.33 9.008 8.003 0.99383 1.43243
  18. 2 4.2004 6.009 9.33 4.7008 4.60333 1.993 3.3243
  19. 3 10.204 52.6009 67.33 9.5008 8.003 0.99383 1.43243
  20. 4 9.20704 45.009 17.33 29.008 5.003 3.9583 1.243

我是这样的.

  1. select *
  2. from (select IDNUM,H2,null as E3,null as H3
  3. from T5)
  4. UnPivot((F,E,H) for sk in ((F1,H1) as 1,(F2,H2) as 2,(F3,E3,H3) as 3))
  5. order by IDNUM,SK;
  6.  
  7. IDNUM SK F E H
  8. ----- -- ------- ------- -------
  9. 1 1 10.2004 9.008 .99383
  10. 1 2 5.009 8.003 1.43243
  11. 1 3 7.33 null null
  12. 2 1 4.2004 4.7008 1.993
  13. 2 2 6.009 4.60333 3.3243
  14. 2 3 9.33 null null
  15. 3 1 10.204 9.5008 .99383
  16. 3 2 52.6009 8.003 1.43243
  17. 3 3 67.33 null null
  18. 4 1 9.20704 29.008 3.9583
  19. 4 2 45.009 5.003 1.243
  20. 4 3 17.33 null null

但我真正需要的是如下……

  1. IDNUM SK F E H F_COL_NAME
  2. ----- -- ------- ------- ------- ----------
  3. 1 1 10.2004 9.008 .99383 F1
  4. 1 2 5.009 8.003 1.43243 F2
  5. 1 3 7.33 null null F3
  6. 2 1 4.2004 4.7008 1.993 F1
  7. 2 2 6.009 4.60333 3.3243 F2
  8. 2 3 9.33 null null F3
  9. 3 1 10.204 9.5008 .99383 F1
  10. 3 2 52.6009 8.003 1.43243 F2
  11. 3 3 67.33 null null F3
  12. 4 1 9.20704 29.008 3.9583 F1
  13. 4 2 45.009 5.003 1.243 F2
  14. 4 3 17.33 null null F3

我怎样才能做到这一点?

解决方法

只需选择idnum,sk,f,e,h,’F’|| SK作为col_name …您需要指定所有列而不是星号.

喜欢这个http://sqlfiddle.com/#!4/12446/21

猜你在找的MsSQL相关文章