oracle怎么把行转列,oracle实现行转列

oracle行转列写法,麻烦大家帮忙写个sql,谢谢

可以用wm_concat函数先把数据变成行显示,然后再通过截取来显示具体的月份,wm_concat转换如下

你所需要的网站建设服务,我们均能行业靠前的水平为你提供.标准是产品质量的保证,主要从事网站设计、成都网站建设、企业网站建设、移动网站建设、网页设计、品牌网站建设、网页制作、做网站、建网站。创新互联拥有实力坚强的技术研发团队及素养的视觉设计专才。

select compay_name cn, wm_concat(income) ic

from (select compay_name, sum(income) income, substr(time, 1, 6) time

from income

---where time =start_month and time = end_month

group by compay_name, substr(time, 1, 6)

order by compay_name, substr(time, 1, 6))

group by compay_name;

oracle数据库里面如何把一行数据转化为列显示

可用union all来实现。

如test表中数据如下:

现要将id为3的一条按列显示,可用如下语句:

select to_char(id) str from test where id=3

union all

select name from test where id=3;

查询结果:

oracle行转列sql怎么写?

行转列的准则就是通过主键进行分组,之后对行其它字段加上sum()、max()、count()函数,里边用decode()这类函数进行处理,总之分组不要用到他就成。

oracle 行转列

测试表测了下,可以用,你看看,主要是先根据逗号进行分割,然后connect,level等于逗号的数目:

select id,nvl(substr(glbh,instr(glbh,',',1,lvl)+1,instr(glbh,',',1,lvl+1)-instr(glbh,',',1,lvl)-1),'kong') glbh

from (

select id,lvl,','||glbh||',' glbh

from test a ,

(select level lvl from dual connect by level=

(select max(length(glbh)-length(replace(glbh,',')))+1 from test)) b

) t1

where substr(glbh,instr(glbh,',',1,lvl)+1,instr(glbh,',',1,lvl+1)-instr(glbh,',',1,lvl)-1) is not null

order by id,glbh;

oracle数据库关于把表的行变成列

姓名 数学 语文 姓名 张飞 赵云 庞统

张飞 60 61 数学 60 80 99

赵云 80 85 变成 语文 61 85 80

庞统 99 80

而且第一行为列名,不是表中的数据,这样的话

也就是第一个表下面三行的数据,变成第二个表下面两行的数据

这样还是可以的


文章题目:oracle怎么把行转列,oracle实现行转列
当前网址:http://pwwzsj.com/article/heeoeg.html