网站首页 > 文章中心 > 其它

Oracle转置怎么取_oracle转置函数

作者:小编 更新时间:2023-09-06 20:44:13 浏览量:285人看过

oracle 中将行相同的其它列的行内容转置为列显示?求SQL

select * from table pivot( sum([value]) for [ITEM] in ([A_MAX_CURRENTL],[A_MAX_CURRENTU],[A_MOTOR_PI_COUNTL],....))as s

oracle 中将一行数据转换成两列

Oracle转置怎么取_oracle转置函数-图1

举例说明:

①.、固定列数的行列转换

student subject grade

--------- ---------- --------

......

转换为

语文 数学 英语

语句如下:select student,

sum(decode(subject,'语文', grade,null)) "语文",

sum(decode(subject,'数学', grade,null)) "数学",

sum(decode(subject,'英语', grade,null)) "英语"

from table

group by student;

--- -----------

①. 我

①. 是

①. 谁

①. 我是谁

这一类型的转换可以借助于PL/SQL来完成,这里给一个例子

IS

BEGIN

END LOOP;

END;

或者不用pl/sql,利用分析函数和 CONNECT_BY 实现:

FROM t))

START WITH rn1 IS NULL

CONNECT BY rn1 = PRIOR rn

GROUP BY c1;

这种是比较麻烦的一种,需要借助pl/sql:

原始数据:

CLASS1 CALLDATE CALLCOUNT

转置后:

------------ ---------- ---------- ----------

试验如下:

①.). 建立测试表和数据

CREATE TABLE t(

calldate DATE,

callcount INTEGER

);

INSERT INTO t(class1, calldate, callcount)

COMMIT ;

CREATE OR REPLACE PACKAGE pkg_getrecord

TYPE myrctype IS REF CURSOR;

END pkg_getrecord;

/

CREATE OR REPLACE FUNCTION fn_rs

RETURN pkg_getrecord.myrctype

CURSOR c1 IS

SELECT ',sum(case when Class1='

|| class1

|| ' then CallCount else 0 end)'

|| ' "CallCount'

FROM t

GROUP BY class1;

r1 c1%ROWTYPE;

list_cursor pkg_getrecord.myrctype;

s := 'select CallDate ';

OPEN c1;

LOOP

FETCH c1 INTO r1;

EXIT WHEN c1%NOTFOUND;

CLOSE c1;

s := s || ' from T group by CallDate order by CallDate desc ';

OPEN list_cursor FOR s;

RETURN list_cursor;

END fn_rs;

var results refcursor;

exec :results := fn_rs;

print results;

--------------- ---------- ---------- ----------

oracle转置表

select 厂家,

sum(case when 列别 = 棉衣 then 1 else 0 end) 棉衣,

sum(case when 列别 = 风衣 then 1 else 0 end) 风衣 ,

sum(case when 列别 = 背心 then 1 else 0 end) 背心

from 表

group by 厂家

oracle中怎么把行转变成列,列转变成行

用C#实现矩阵的转置.

假设 原矩阵式 a是int [m,n],新定义一个二位数组b是int [n,m]

然后对每个b的元素b[x,y]赋值 a[y,x]

Oracle语句怎么截取{和:之间的值?

如果字段存的就是这个,那么这个应该是字符串吧,那么就分几步操作.

(1)定位,定位{和:的位置,从现在来看有两种可能,第一种

定位的函数应该是instr

还是那句话,如果是第二种可能,那么就要找每一个{的位置,然后找在{后面距离最近的冒号的位置,然后再一个个的截取操作,正则应该可以操作,不过我还是那句话,需要测试,意思和这个截取函数差不多,自己好好理解一下应该就能操作了.

oracle纵表转横表

一般行列转置,有两种做法

一种是case,但是由于case需要提前知道列数,所以在很多情况下不能满足

所以出现了动态语句case,通过动态SQL语句的组装,实现了动态的列的拼装.但是语句复杂度很高

所以另一种方式就是靠程序转置,使用一些Hash(JAVA)或Dictionary(C#)等一些对象,可以在程序中轻松地做出转置,但是也有缺点,缺点就是开销大,原本只处理一次的数据(只在数据库处理),现在需要处理两次(数据库一次,程序一次)

以上就是土嘎嘎小编为大家整理的Oracle转置怎么取相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章