在oracle数据库中,有一个表,有三列,A B C,有三行数据,现在要求写一个sql,把第一列变成第一行,

第二列变成第二行,第三列变成第三行!求解...

这是oracle的列转行问题 可以使用oracle的一个函数 行转列组合函数实现 也可以使用decode函数、case when函数实现 再有就是用临时表实现。。。。追问

大哥别光说啊,我要知道函数怎么写不就不问了么,麻烦你写个例子啊

追答

对你问题的理解:
CREATE TABLE TEST_TAB(A VARCHAR2(10),A_VALUE NUMBER,B VARCHAR2(10),B_VALUE NUMBER,C VARCHAR2(10),C_VALUE NUMBER);
INSERT INTO TEST_TAB VALUES('语文','90','数学','68','政治','24');
INSERT INTO TEST_TAB VALUES('语文','70','数学','98','政治','84');
INSERT INTO TEST_TAB VALUES('语文','45','数学','78','政治','96');
COMMIT;
解决方案:
CREATE TABLE TEST_TAB_COL(T_NAME VARCHAR2(10),T_COL VARCHAR2(10));
INSERT ALL /*+APPEND*/
INTO TEST_TAB_COL
VALUES
(A, A_VALUE) INTO TEST_TAB_COL
VALUES
(B, B_VALUE) INTO TEST_TAB_COL
VALUES
(C, C_VALUE)
SELECT T.A, T.A_VALUE, T.B, T.B_VALUE, T.C, T.C_VALUE FROM TEST_TAB T

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-03-06
假设你的表结构是tb_name(id, remark),则语句如下:

SELECT
a.id,
wm_concat (a.remark) new_result
FROM
tb_name a
group by
a.id

...B C,有三行数据,现在要求写一个sql,把第一列变成第一行,
这是oracle的列转行问题 可以使用oracle的一个函数 行转列组合函数实现 也可以使用decode函数、case when函数实现 再有就是用临时表实现。。。

SQL查询,如何查询一个表中第三行,第三列的数据
我做了以下方法:select t.列的字段名 from (select ROWNUM As No , M.* from 表名 M) t where t.No = '3'就可以了。这里的M表和T表是一个表,也即是说如果你的表明为A的话,select t.列的字段名 from (select ROWNUM As No , M.* from A M) t where t.No = '3'就...

oracle数据库关于把表的行变成列
赵云 80 85 变成 语文 61 85 80 庞统 99 80 而且第一行为列名,不是表中的数据,这样的话 也就是第一个表下面三行的数据,变成第二个表下面两行的数据 这样还是可以的

一个单元格有三行数据,是强制换行的。我想把他分成三列,通过数据里面的...
第一步:输入首行数据 第二步:点击B2--数据---快速充填 结果:第三步:点击C2--数据---快速充填 第四步:点击D2--数据---快速充填

sql语句列转行
例如,假设有一个表`my_table`,包含列A、列B和列C,现在想要将这三列的数据转换为行数据显示,可以使用如下SQL语句:sql SELECT 列A AS 值为行 FROM my_table UNION ALL SELECT 列B FROM my_table UNION ALL SELECT 列C FROM my_table;这个查询将会返回三行数据,分别是原来表中的列A、列B...

oracle中第一行a和空格,第二行b空格
第一行=第三列 a+b=1+a\/4 3a+4b=4 第一行=对角线 b-b\/2=3b\/2+a\/4 a+4b=0 a=2 b=-1\/2 各行各列及对角线上的三个数字之和都相等且=7\/4 第三行第二列中填入的数为3

调整oracle数据库行与列!
调宽度set linesize 2000 页数 set pagesize 2000;然后把sql plus这个窗口调大

oracle查询sql语句,将查询结果返回至一行内
,max(case when sub.no1= 2 then b else null end ) as C2 ,max(case when sub.no1= 3 then a else null end ) as A3 ,max(case when sub.no1= 3 then b else null end ) as B3 ,max(case when sub.no1= 3 then b else null end ) as C3 from ( select a,b,c,ROW...

excel如何将一个项目的三行数据做在同一行里
告诉你个笨办法, 在第一行分数列后列后第一列写=c2 第二列写=C3 第三列写=C4, 然后选中这三列往下拖,你会发现没一个人的第一行都对了。然后想办法去掉中间的两行,办法是在最后一列,按照1,2,3写三个然后往下拖,变出一列1,2,3,1,2,3, 然后排序,把所有序号是1的粘贴出来就行...

oracle一个编号对应多个值怎么取得这个值
你这id列看着麻烦,稍微做了下更改,改成了数字 创建表及数据:create table test(prj_id int,rectify int);insert into test values (1,1);insert into test values (1,2);insert into test values (1,0);insert into test values (2,1);insert into test values (3,0);insert into ...

相似回答