列转行
create table TEST_TB_GRADE
(
ID NUMBER(10) not null,
USER_NAME VARCHAR2(20 CHAR),
COURSE VARCHAR2(20 CHAR),
SCORE FLOAT
);
Insert into TTT
(USER_NAME, 语文, "数学", "英语", 政治, "地理", "历史", 生物)
Values
('a1', 80, 85, 70, 76, 72, 83, 78);
Insert into TTT
(USER_NAME, 语文, "数学", "英语", 政治, "地理", "历史", 生物)
Values
('a2', 82, 81, 72, 81, 76, 83, 81);
COMMIT;
select user_name,decode(course,'语文',score,0) 语文,decode(course,'数学',score,0) 数学,decode(course,'英语',score,0) 英语,decode(course,'政治',score,0) 政治,
decode(course,'地理',score,0) 地理,decode(course,'历史',score,0) 历史,decode(course,'生物',score,0) 生物 from TEST_TB_GRADE
select user_name,sum(decode(course,'语文',score,0)) 语文,sum(decode(course,'数学',score,0)) 数学,sum(decode(course,'英语',score,0)) 英语,sum(decode(course,'政治',score,0)) 政治,
sum(decode(course,'地理',score,0)) 地理,sum(decode(course,'历史',score,0)) 历史,sum(decode(course,'生物',score,0)) 生物 from TEST_TB_GRADE group by user_name
行转列
CREATE TABLE TTT
(
USER_NAME VARCHAR2(20 CHAR),
语文 NUMBER,
"数学" NUMBER,
"英语" NUMBER,
政治 NUMBER,
"地理" NUMBER,
"历史" NUMBER,
生物 NUMBER
)
LOGGING
NOCOMPRESS
NOCACHE
NOPARALLEL
MONITORING;
Insert into TEST_TB_GRADE
(ID, USER_NAME, COURSE, SCORE)
Values
(1, 'a1', '语文', 80);
Insert into TEST_TB_GRADE
(ID, USER_NAME, COURSE, SCORE)
Values
(2, 'a1', '数学', 85);
Insert into TEST_TB_GRADE
(ID, USER_NAME, COURSE, SCORE)
Values
(3, 'a1', '英语', 70);
Insert into TEST_TB_GRADE
(ID, USER_NAME, COURSE, SCORE)
Values
(4, 'a1', '政治', 76);
Insert into TEST_TB_GRADE
(ID, USER_NAME, COURSE, SCORE)
Values
(5, 'a1', '历史', 83);
Insert into TEST_TB_GRADE
(ID, USER_NAME, COURSE, SCORE)
Values
(6, 'a1', '地理', 72);
Insert into TEST_TB_GRADE
(ID, USER_NAME, COURSE, SCORE)
Values
(7, 'a1', '生物', 78);
Insert into TEST_TB_GRADE
(ID, USER_NAME, COURSE, SCORE)
Values
(8, 'a2', '语文', 82);
Insert into TEST_TB_GRADE
(ID, USER_NAME, COURSE, SCORE)
Values
(9, 'a2', '数学', 81);
Insert into TEST_TB_GRADE
(ID, USER_NAME, COURSE, SCORE)
Values
(10, 'a2', '英语', 72);
Insert into TEST_TB_GRADE
(ID, USER_NAME, COURSE, SCORE)
Values
(11, 'a2', '政治', 81);
Insert into TEST_TB_GRADE
(ID, USER_NAME, COURSE, SCORE)
Values
(12, 'a2', '历史', 83);
Insert into TEST_TB_GRADE
(ID, USER_NAME, COURSE, SCORE)
Values
(13, 'a2', '地理', 76);
Insert into TEST_TB_GRADE
(ID, USER_NAME, COURSE, SCORE)
Values
(14, 'a2', '生物', 81);
COMMIT;
/* Formatted on 2013/01/09 15:26 (Formatter Plus v4.8.8) */
SELECT user_name, '语文' course, 语文 as score
FROM ttt
UNION
SELECT user_name, '数学' course, 数学 as score
FROM ttt
UNION
SELECT user_name, '英语' course, 英语 as score
FROM ttt
UNION
SELECT user_name, '政治' course, 政治 as score
FROM ttt
UNION
SELECT user_name, '历史' course, 历史 as score
FROM ttt
UNION
SELECT user_name, '生物' course, 生物 as score
FROM ttt
UNION
SELECT user_name, '地理' course, 地理 as score
FROM ttt
order by user_name,course
联系客服