oracle 行转列函数pivot和unpivot
今天接到业务部门的一个需求,需要对同一公司的不同财务指标进行排序,需要用到oracle的行转列函数unpivot。
财务报表的表结构为:
要实现业务部门的排序筛选功能,需要首先将行数据转为列数据:

使用unpivot函数,实现如下
with t4 as (select t3.COMPCODE,
t3.ENDDATE,
t3.CURFDS as "货币资金",
t3.TRADFINASSET as "交易性金融资产",
t3.NOTESRECE as "应收票据",
t3.PLAC AS "拆出资金",
T3.DERIFINAASSET AS "衍生金融资产",
T3.ACCORECE AS "应收账款",
T3.PREP AS "预付款项",
T3. PREMRECE AS "应收保费",
T3. REINRECE AS "应收分保账款",
T3. REINCONTRESE AS "应收分保合同准备金",
T3. INTERECE AS "应收利息",
T3. DIVIDRECE AS "应收股利",
T3. OTHERRECE AS "其他应收款",
T3. EXPOTAXREBARECE AS "应收出口退税",
T3. SUBSRECE AS "应收补贴款",
T3. MARGRECE AS "应收保证金",
T3. INTELRECE AS "内部应收款",
T3. PURCRESAASSET AS "买入返售金融资产",
T3. INVE AS "存货",
T3. ACCHELDFORS AS "划分为持有待售的资产",
T3. PREPEXPE AS "待摊费用",
T3. UNSEG AS "待处理流动资产损益",
T3. EXPINONCURRASSET AS "一年内到期的非流动资产",
T3. OTHERCURRASSE AS "其他流动资产",
T3. TOTCURRASSET AS "流动资产合计",
T3. LENDANDLOAN AS "发放贷款及垫款",
T3. AVAISELLASSE AS "可供出售金融资产",
T3. HOLDINVEDUE AS "持有至到期投资",
T3. LONGRECE AS "长期应收款",
T3. EQUIINVE AS "长期股权投资",
T3. OTHERLONGINVE AS "其他长期投资",
T3. INVEPROP AS "投资性房地产",
T3. FIXEDASSEIMMO AS "固定资产原值",
T3. ACCUDEPR AS "累计折旧",
T3. FIXEDASSENETW AS "固定资产净值",
T3. FIXEDASSEIMPA AS "固定资产减值准备",
T3. FIXEDASSENET AS "固定资产净额",
T3. CONSPROG AS "在建工程",
T3. ENGIMATE AS "工程物资",
T3. FIXEDASSECLEA AS "固定资产清理",
T3. PRODASSE AS "生产性生物资产",
T3. COMASSE AS "公益性生物资产",
T3. HYDRASSET AS "油气资产",
T3. INTAASSET AS "无形资产",
T3. DEVEEXPE AS "开发支出",
T3. GOODWILL AS "商誉",
T3. LOGPREPEXPE AS "长期待摊费用",
T3. TRADSHARTRAD AS "股权分置流通权",
T3. DEFETAXASSET AS "递延所得税资产",
T3. OTHERNONCASSE AS "其他非流动资产"
from TQ_FIN_PROBALSHEETNEW t3)
select COMPCODE , ENDDATE, zhibiao, jine from t4 unpivot (jine for zhibiao in ("应收保费",
"应收分保账款",
"应收分保合同准备金",
"应收利息",
"应收股利",
"其他应收款",
"应收出口退税",
"应收补贴款",
"应收保证金",
"内部应收款",
"买入返售金融资产",
"存货",
"划分为持有待售的资产",
"待摊费用",
"待处理流动资产损益",
"一年内到期的非流动资产",
"其他流动资产",
"流动资产合计",
"发放贷款及垫款",
"可供出售金融资产",
"持有至到期投资" ,
"长期应收款" ,
"长期股权投资" ,
"其他长期投资" ,
"投资性房地产" ,
"固定资产原值" ,
"累计折旧" ,
"固定资产净值" ,
"固定资产减值准备",
"固定资产净额" ,
"在建工程" ,
"工程物资" ,
"固定资产清理" ,
"生产性生物资产" ,
"公益性生物资产" ,
"油气资产" ,
"无形资产" ,
"开发支出" ,
"商誉" ,
"长期待摊费用" ,
"股权分置流通权" ,
"递延所得税资产" ,
"其他非流动资产"
) )
oracle 行转列函数pivot和unpivot的更多相关文章
- Oracle行转列,pivot函数和unpivot函数
pivot函数:行转列函数: 语法:pivot(任一聚合函数 for 需专列的值所在列名 in (需转为列名的值)):unpivot函数:列转行函数: 语法:unpivot(新增值所在列的列名 for ...
- oracle行转列函数WMSYS.WM_CONCAT 用法
1.通过 10g 所提供的 WMSYS.WM_CONCAT 函数即可以完成 行转列的效果 select group_code, wm_concat(display_title) from DR_OPM ...
- oracle行转列函数以及一些窗口函数(PIVOT ,OVER)
可以查看博客园上传的文件 pivot 除了要转成列的字段(classnum,classid)值不一样,其他值都应该相同,否则转的数据有问题
- 使用SQL行转列函数pivot遇到的问题
背景:对投票的结果按照单位进行汇总统计,数据库中表记录的各个账号对各个选项的投票记录.马上想到一个解决方案,先根据单位和选项进行Group By,然后再行转列得出单位对各个选项的投票情况. with ...
- oracle行转列函数
- [转]Oracle SQL函数pivot、unpivot转置函数实现行转列、列转行
原文地址:http://blog.csdn.net/seandba/article/details/72730657 函数PIVOT.UNPIVOT转置函数实现行转列.列转行,效果如下图所示: 1.P ...
- Oracle 行转列pivot 、列转行unpivot 的Sql语句总结
这个比较简单,用||或concat函数可以实现 select concat(id,username) str from app_user select id||username str from ap ...
- Oracle 行转列 动态出转换的列
本文链接:https://blog.csdn.net/Huay_Li/article/details/82924443 10月的第二天,前天写了个Oracle中行转列的pivot的基本使用方法,然后, ...
- Oracle 行转列(不固定行数的行转列,动态)(转)
http://bbs.csdn.net/topics/330039676 SQLSERVER :行列转换例子: http://www.cnblogs.com/gaizai/p/3753296.htm ...
随机推荐
- Django基础——ORM字段和字段参数
ORM概念: 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象( 1. 不同的程序员写的SQL水平参差不齐 2. ...
- Leetcode 89.格雷编码
格雷编码 格雷编码是一个二进制数字系统,在该系统中,两个连续的数值仅有一个位数的差异. 给定一个代表编码总位数的非负整数 n,打印其格雷编码序列.格雷编码序列必须以 0 开头. 示例 1: 输入: 2 ...
- poj 3253 Fence Repair(priority_queue)
Fence Repair Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 40465 Accepted: 13229 De ...
- Android StatusBarUtil:设置Android系统下方虚拟键键盘透明度
Android StatusBarUtil:设置Android系统下方虚拟键键盘透明度 Android StatusBarUtil是github上的一个开源项目,主页:https://githu ...
- C语言试题(标准答案)
C语言试题(标准答案) 一.单选题(每小题2分,共20小题40分) 1.1-1.5 B D A C B 1.6-1.10 C A D B C 1.11-1.1 ...
- A+B Problem IV
描述acmj最近发现在使用计算器计算高精度的大数加法时很不方便,于是他想着能不能写个程序把这个问题给解决了. 输入 包含多组测试数据每组数据包含两个正数A,B(可能为小数且位数不大于400) 输出 ...
- lua中的metatable和metamethod
--元表和元方法给lua里的值设定一些操作,让我们可以对这些操作自定义 --创建一个新的table变量时,它是不存在元表的 --在Lua中,只能设置table的元表,其他类型的值的元表,只能通过C代码 ...
- windows下检測文件改变
这个主要是应用在我前一篇博客里提到的脚本热载入功能. 主要实现的功能检測目录内文件的变化(改变.新增.删除.重命名),当发现改变的时候通知lua又一次载入脚本.基本上就是一个windows api的使 ...
- vim中自己主动加入凝视 加入文本信息
工欲善其事,必先利其器.在开发过程中.方便.快捷的开发环境.能提高工作效率.优美的界面能让我们心情愉悦:最重要的是,能保持我们在外行严重高深莫測的牛逼~ 假设在创建新的源程序文件时希望能自己主动产生一 ...
- LeetCode 168. Excel Sheet Column Title (Excel 表格列名称)
Given a positive integer, return its corresponding column title as appear in an Excel sheet. For exa ...