189 8069 5689

oracle怎么行转列 oracle 行转列,列转行

Oracle 行转列问题,求助大神

创建表插入数据:

创新互联建站-专业网站定制、快速模板网站建设、高性价比乌尔禾网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式乌尔禾网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖乌尔禾地区。费用合理售后完善,10多年实体公司更值得信赖。

create table test

(id int,

field int);

insert into test values (1,101);

insert into test values (1,102);

insert into test values (1,103);

insert into test values (2,36);

insert into test values (2,37);

insert into test values (2,38);

insert into test values (2,39);

commit;

执行:

select t.id,

max(decode(rn, 1, field, null)) field1,

max(decode(rn, 2, field, null)) field2,

max(decode(rn, 3, field, null)) field3,

max(decode(rn, 4, field, null)) field4,

max(decode(rn, 5, field, null)) field5

from (select test.*, row_number() over(partition by id order by field) rn

from test) t

group by t.id;

结果:

oracle行转列函数

REGEXP_SUBSTR是ORACLE函数  结果已验证

SELECT '1',REGEXP_SUBSTR('a,b', '[^,]+', 1, LEVEL, 'i') AS STR  

FROM DUAL  

CONNECT BY LEVEL =  

LENGTH('a,b') - LENGTH(REGEXP_REPLACE('a,b', ',', ''))+1;

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 行转列

测试表测了下,可以用,你看看,主要是先根据逗号进行分割,然后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行转列sql怎么写?

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

Oracle横竖转换怎么做

你把屏幕旋转90°,或者你把脑袋横着屏幕也可以。

不仅仅是 Oracle ,就目前人类已经创造的数据库而言,在显示习惯上,不管是屏幕还是纸质,横向显示列(Col),纵向显示行(Row),因为表的数据增减是沿着行(Row)的方向增减,而人们更习惯于纵向快速对比同一列的多行信息,而不善于横向对比同一行的多列信息。

大概可以猜到你希望构建一个数据结果视图,这个视图的列值是指定的某个月的全部日期,如果在最左边再加上几列,比如序号、名次、姓名,最右边再加上一列,比如总业绩,那么就可以用来展示该月全体销售人员的销售额以及排名。如果要实现类似需求,那么就努力构造你的 SQL 语句吧,虽然没有证据证明无法用 SELECT 语句实现,但似乎SELECT 必须制定列名,即使你使用 * 那也代表的是所有列。如果配合程序语言,那么实现起来就很简单。你可以试试存储过程,动态创建表,直接构造你需要的列,然后 SELECT * 即可。

上个世纪出现计算机屏幕的时候,屏幕显示就是纵向滚屏,横向从来没动过,至今人们已经习惯了屏幕纵向滚动,因为大多数语言文字都是横向排版比较适合人们的阅读习惯,纵向阅读确实费劲。如果最初屏幕是横向滚动的,那么现在情况也许就截然不同了。

顺便说一下,阅读横向排版的纸质或电子版的中文书籍,页面较宽而字符较小行距较小的时候,容易找错下一行。阅读英文则很少有此情况,这也许是方块字与长短英文单词的区别?阅读台湾出版的纵向排版的中文书籍,刚开始不习惯,后来觉得确实比横向排版有优势。比如,你单手把书翻卷起来,阅读到接近中缝的文本时,不需要反复以书脊为轴转动书本,阅读很方便。而如果是横排,那么你看到接近中缝的几个字之后,需要转动书本再去找举例中缝最远的下一行,很容易就找错了。也许,如果计算机最初是台湾人发明的,那么现在鼠标中间那个滚轮就应该是横着的,电脑屏幕也是横向滚动,而纵向基本不动了。看看下面这段纵向文字,舒服不?


名称栏目:oracle怎么行转列 oracle 行转列,列转行
文章转载:http://cdxtjz.com/article/hiheed.html

其他资讯