oracle中如何行转列 行转列oracle方法

ORAClE sql如何实现行转列?

如果“站名”、“条码”、“时间”都是一样的话,可以这么写:

我们提供的服务有:成都网站设计、成都做网站、微信公众号开发、网站优化、网站认证、浮山ssl等。为上千多家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的浮山网站制作公司

with

t_temp as (select row_number() over (partition by station_name order by param_name asc) id, t.* from t),

t_temp1 as (select * from t_temp where id = 1),

t_temp2 as (select * from t_temp where id = 2),

t_temp3 as (select * from t_temp where id = 3)

select '站名' col1, '条码' col2, t_temp1.参数名 col3, t_temp2.参数名 col4, t_temp3.参数名 col5, '时间' col6

from t_temp1, t_temp2, t_temp3

where t_temp1.站名 = t_temp2.站名

and t_temp2.站名 = t_temp3.站名

union all

select t_temp1.站名, t_temp1.条码, to_char(t_temp1.数值), to_char(t_temp2.数值), to_char(t_temp3.数值), to_char(t_temp1.时间)

from t_temp1, t_temp2, t_temp3

where t_temp1.站名 = t_temp2.站名

and t_temp2.站名 = t_temp3.站名

oracle 如何将 行转换为列 (具体如下,求sql)

WITH A AS(SELECT ID_F,LINE_F,STAGE_F,UNITSTAGE_F,CAST(CHILDSTAGE_F AS VARCHAR(100)) AS CHILDSTAGE_F,PARENTID_F FROM 表名 WHERE PARENTID_F IS NULL

UNION ALL

SELECT 表名.ID_F,表名.LINE_F,表名.STAGE_F,表名.UNITSTAGE_F,CAST(A.CHILDSTAGE_F+表名.CHILDSTAGE_F AS VARCHAR(100)) AS CHILDSTAGE_F,表名.PARENTID_F

FROM 表名 JOIN A ON 表名.PARENTID_F=A.ID_F)

SELECT LINE_F,STAGE_F,UNITSTAGE_F,CHILDSTAGE_F

FROM A

WHERE PARENTID_F IS NOT NULL

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 行转列问题,求助大神

创建表插入数据:

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横竖转换怎么做

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

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

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

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

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

oracle行转列sql怎么写?

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


本文题目:oracle中如何行转列 行转列oracle方法
网页URL:http://pwwzsj.com/article/hipies.html