将列转为行(oracle)

Unpivot columns into rows (oracle)(将列转为行(oracle))
本文介绍了将列转为行(oracle)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

很像这个原始的 SO 在 Oracle 中将行动态转为列

much like this original SO Pivoting rows into columns dynamically in Oracle

但我想做相反的事情

我怎样才能得到

 ID       NAME    AGE    GENDER  STATUS
----     -----   -----  ------  --------
  1      Bob      30     male 
  2      Susan                   married

进入这个

ID       K       V
----     -----   -----
  1      name    Bob
  1      age     30
  1      gender  male
  2      name    Susan
  2      status  married

推荐答案

您正在寻找 unpivot.

select * from t 
unpivot (
          v for k in ("NAME","AGE","GENDER","STATUS")
        ) u

如果年龄列是整数,您可能会遇到类型不匹配的情况.在这种情况下,在取消旋转之前将其转换为字符.

You may have a type mismatch if the age column is an integer. In that case convert it to a character before unpivoting.

select *
from (select id,name,to_char(age) age,gender,status from t) t 
unpivot (
         v for k in ("NAME","AGE","GENDER","STATUS")
        ) u

这篇关于将列转为行(oracle)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Execute complex raw SQL query in EF6(在EF6中执行复杂的原始SQL查询)
Hibernate reactive No Vert.x context active in aws rds(AWS RDS中的休眠反应性非Vert.x上下文处于活动状态)
Bulk insert with mysql2 and NodeJs throws 500(使用mysql2和NodeJS的大容量插入抛出500)
Flask + PyMySQL giving error no attribute #39;settimeout#39;(FlASK+PyMySQL给出错误,没有属性#39;setTimeout#39;)
auto_increment column for a group of rows?(一组行的AUTO_INCREMENT列?)
Sort by ID DESC(按ID代码排序)