近期在工作中。对行转列进行了应用,在此做一个简单的小结。

转换步骤例如以下:

   
1、创建表结构

CREATE TABLE RowToCol
(
ID NUMBER(10) not null,
USER_NAME VARCHAR2(20 CHAR),
COURSE VARCHAR2(20 CHAR),
SCORE VARCHAR2(20 CHAR)
)

2、插入測试数据(原始数据如图)


3、行转列实现效果


4、详细实现

主要原理是利用decode函数、聚集函数(sum/max/min/avg),结合group by分组实现的,详细sql例如以下:

select t.user_name as 姓名,
MAX(decode(t.course,'语文',score,null)) as 语文,
MAX(decode(t.course,'数学',score,null)) as 数学。
MAX(decode(t.course,'英语',score,null)) as 英语
from RowToCol t group by t.user_name order by t.user_name

*当要分组的值,如样例中的score列是数值型,则聚集函数能够使用sum/max/min/avg,可是字符行的仅仅能使用max/min。

------------------------------------------------------------------------------------------------------------------------------------------------------

附注:

decode函数:

它是一种特有的函数计算方式,相当于计算机语言中的if...else...

decode(条件。值1。翻译值1,值2。翻译值2,...值n。翻译值n,缺省值)

其理解为:

if (条件==值1)
then    
return(翻译值1)
elsif (条件==值2)
then    
return(翻译值2)    
......
elsif (条件==值n)
then    
return(翻译值n)
else    
return(缺省值)
end if

行转列包含行转列、列转行、多列转换成字符串、多行转换成字符串、字符串转换成多行和字符串转换成多列六种情况。假设大家有兴趣,能够进行进一步的研究。

最新文章

  1. 指针数组 null与空字符串
  2. Android -- TouchDelegate
  3. Python命令 (if __name__=="__main__":)
  4. Codeforces Round #243 (Div. 2) A. Sereja and Mugs
  5. ArcGIS Javascript地图上添加json数据格式的点
  6. hdu ---(4517)小小明系列故事——游戏的烦恼(Dp)
  7. SQLServer2008设置开启INTERNET远程连接
  8. Layout Resource官方教程(4)<include>与<merge>
  9. C# 自定义光标 WaitCursor
  10. errno.h 错误码描述.
  11. 中文编程语言之Z语言初尝试: ZLOGO 4
  12. MinerConstanits.java 常量类
  13. [转帖]SAP一句话入门:Production Planning
  14. count列表中字符出现的次数
  15. 20175314 《Java程序设计》第四周学习总结
  16. Centos7.x gnome 桌面美化
  17. JSR303 分組数据验证的使用
  18. CORS实践
  19. Arcgis for JavascriptAPI 常用接口
  20. 动力学仿真引擎ODE的学习笔记,C#演示(一)

热门文章

  1. (转)Spring管理的Bean的生命周期
  2. CentOS 7上修改主机名
  3. 汇编3栈帧,参数传递,串操作,混合汇编,x64,asm文件
  4. uva1609 Foul Play
  5. vs code 插件list
  6. 最短路 || POJ 1511 Invitation Cards
  7. C++构造函数(复制构造函数)、析构函数
  8. mybatis-使用junit测试与main方法测试结果不一致问题
  9. 时钟Demo
  10. 任务一:零基础HTML编码