oracle行转列实践

在Oracle 11g中,Oracle 增加了2个查询:pivot(行转列) 和unpivot(列转行)

pivot(聚合函数 for 列名 in(类型)) ,其中 in(‘‘) 中可以指定别名,in中还可以指定子查询

行转列:

select * from rhsa_gcfx_result order by org_id,item,dictname

select org_id,item,sum(value) from rhsa_gcfx_result where dictname = ‘入院途径‘ and 1=1 group by item,org_id order by org_id,item

将item列转换成行

select * from (select org_id,item,sum(value) value from rhsa_gcfx_result where dictname = ‘入院途径‘ and 1=1 group by item,org_id)
pivot (sum(value) for item in (‘1. 急诊‘ 急诊 , ‘2. 门诊‘ 门诊, ‘3. 其他医疗机构转入‘ 其他医疗机构转入, ‘9. 其他‘ 其他))

时间: 2024-10-01 00:38:09

oracle行转列实践的相关文章

oracle行转列

针对oracle数据查询的数据,行转列 1.wm_concat函数: 例一: select c1,c2,wm_concat(c3) from T where.... group by c1,c2 查询结果自动用","分割 例二: select c1,c2,wm_concat(c3)over(partition by ..order by..) from T where.... 其中,partition用来分组, order用来排序 2.sys_connect_by_path函数: 这个

oracle 行转列 分析函数

oracle 行转列 首先看一下源数据: 方法一:WM_CONCAT group by 这个方法没有问题. SELECT CODE_TS, WMSYS.WM_CONCAT(S_NUM + 1 || ':' || ELEMENT) ELEMENT FROM T_MERCH_ELEMENT where code_ts='020745' group by CODE_TS; 得到的结果: 上面大家可能会发现序号没有按顺序排列下来.如果没有要求,就这样就可以了.如果要排序看方法二. 方法二:WM_CONC

Oracle行转列、列转行的Sql语句总结(转)

多行转字符串 这个比较简单,用||或concat函数可以实现 select concat(id,username) str from app_userselect id||username str from app_user 字符串转多列 实际上就是拆分字符串的问题,可以使用 substr.instr.regexp_substr函数方式 字符串转多行 使用union all函数等方式 wm_concat函数 首先让我们来看看这个神奇的函数wm_concat(列名),该函数可以把列值以",&quo

oracle 行转列、列转行

最近做数据处理,经常遇到需要行转列.列转行的场景,记录个非常简单实用的oracle  列转行.行转的列方法 1.行转列,基础数据如下 做行转列处理 处理SQL select user_name,max(date_201501) as date_201501,max(date_201502),max(date_201503),max(date_201504) from (select t.user_name,case when t.acct_date = '201501' then t.flow

Oracle 行转列、列转行 的Sql语句总结

参考文章:http://blog.csdn.net/tianlesoftware/article/details/4704858 多行转字符串 这个比较简单,用||或concat函数可以实现 select concat(id,username) str from app_user select id||username str from app_user 字符串转多列 实际上就是拆分字符串的问题,可以使用 substr.instr.regexp_substr函数方式 字符串转多行 使用union

Oracle行转列操作

有时候我们在展示表中数据的时候,需要将行转为列来显示,如以下形式: 原表结构展示如下:---------------------------产品名称    销售额     季度---------------------------奶酪          50     第一季度奶酪          60     第二季度啤酒          50     第二季度啤酒          80     第四季度--------------------------- 现在需要将上面的原表结构转换为

Oracle行转列的函数

--行转列的函数-- CREATE OR REPLACE FUNCTION Calvin( col IN VARCHAR2,dw IN VARCHAR2) RETURN VARCHAR2 IS retval varchar2(32); Sel_sql varchar2(2000); ---//SQL语句声明 BEGIN Sel_sql:='select '||col||' from TB5001 where dwdm='''|| dw||''''; execute immediate Sel_s

Oracle 行转列(pivot、wm_concat、decode)使用总结(转载)

偶然需要了解,学习了这篇文章,转载记录一下 自:http://blog.csdn.net/jxzkin/article/details/7949629 1.创建测试数据 [html]?view plaincopy CREATE?TABLE?CC?? ??(Student?NVARCHAR2(2),Course?NVARCHAR2(2),Score?INT?? ??);?? [html]?view plaincopy INSERT?into?CC??? select?N'张三',N'语文',78?

偶遇Oracle行转列

行转列应该是数据库比较常见的操作了,在oracle中可以使用pivot.decode,可以参考呆瓜的blog: http://blog.csdn.net/ch7543658/article/details/41146809 SELECT name, MAX(DECODE(course, 'java', gread)) AS java, MAX(DECODE(course, 'c#', gread)) AS c#, MAX(DECODE(course, 'c', gread)) AS c, MAX