向各位高手請教一下如何用select 執行表A,使運行的結果如下:
表:Aname yuwen shuxue yingyu
a1 70 80 90
a2 71 81 91運行的結構:
name kemu chengji
a1 yuwen 70
a1 shuxue 80
a1 yingyu 90
a2 yuwen 71
a2 shuxue 81
a2 yingyu 91謝謝!
表:Aname yuwen shuxue yingyu
a1 70 80 90
a2 71 81 91運行的結構:
name kemu chengji
a1 yuwen 70
a1 shuxue 80
a1 yingyu 90
a2 yuwen 71
a2 shuxue 81
a2 yingyu 91謝謝!
解决方案 »
- 急求 《Oracle Database 10g DBA手册》 电子书中、英文版本!!高分回报!!
- Sql巨星级别问题啊~~~~~~~~~不知道对高手来说是不是很简单的问题啊~
- 大家好,我想问一个两个oracle数据库通讯的问题
- 求助,一个查询的问题
- 一个存储过程
- ORA-01031: insufficient privileges 错误?
- Oracle 服务器断电后,连接不上,怎么办?
- ORACLE的数据类型问题。
- 各位如何分发Oracle客户端连接,有没有MS SQL Server里那样的 *.MSM
- oracle模糊分组查询统计
- 高级复制问题 在线等
- 服务器突然断电,ORACLE提示ORA-01033错误.在下很急,请各位兄弟姐妹帮忙解决一下.
我的做法太麻煩 就是要做個臨時表,插入要查詢出來的信息,然後order by 就行了
SQL> SELECT * FROM TEST111;NAME YUWEN SHUXUE YINGYU
---------- ---------- ---------- ----------
A1 70 80 90
A2 71 81 91SQL>
SQL> SELECT NAME,
2 DECODE(RN,1,'YUWEN',2,'SHUXUE',3,'YINGYU',NULL) "KEMU",
3 SUBSTR(','||YUWEN||','||SHUXUE||','||YINGYU||',',
4 INSTR(','||YUWEN||','||SHUXUE||','||YINGYU||',',',',1,RN)+1,
5 INSTR(','||YUWEN||','||SHUXUE||','||YINGYU||',',',',1,RN+1)
6 -INSTR(','||YUWEN||','||SHUXUE||','||YINGYU||',',',',1,RN)-1) "XF_COL"
7 FROM TEST111,
8 (
9 SELECT ROWNUM RN
10 FROM ALL_OBJECTS
11 WHERE ROWNUM <= (SELECT MAX(LENGTH(TO_CHAR(YUWEN ||','||SHUXUE||','||
12 YINGYU)) -
13 LENGTH(REPLACE(TO_CHAR(YUWEN||','||SHUXUE ||','||
14 YINGYU),
15 ',',
16 '')))
17 FROM TEST111) + 1
18 )AO
19 WHERE INSTR(','||YUWEN||','||SHUXUE||','||YINGYU||',',',',1,RN) > 0
20 ORDER BY 1;NAME KEMU XF_COL
---------- ------ --------------------------------------------------------------------------------
A1 YUWEN 70
A1 SHUXUE 80
A1 YINGYU 90
A2 YUWEN 71
A2 SHUXUE 81
A2 YINGYU 916 rows selectedSQL>
CREATE TABLE a(NAME VARCHAR2(10),yuwen INT,shuxue INT,yingyu INT);
INSERT INTO a VALUES('a1',70,80,90);
INSERT INTO a VALUES('a2',71,81,91);
SELECT NAME, 'yuwen' KEMU, YUWEN CHENGJI
FROM A
UNION
SELECT NAME, 'shuxue' KEMU, SHUXUE
FROM A
UNION
SELECT NAME, 'yingyu' KEMU, YINGYU FROM A输出:
NAME KEMU CHENGJI
a1 shuxue 80
a1 yingyu 90
a1 yuwen 70
a2 shuxue 81
a2 yingyu 91
a2 yuwen 71
謝謝枫の叶,但是我有些地方不太明白:主要是求子字符串喝查找字符串,我看不明白是怎么回事?
INSTR(',' || YUWEN || ',' || SHUXUE || ',' || YINGYU || ',',
',',
1,
RN)我剛查過instr的用法:InStr([start, ]string1, string2[, compare]) 返回指定一字符串在另一字符串中最先出现的位置。但是上面的語句我就不明白!希望枫の叶能幫解釋一下。謝謝
A: ',' || YUWEN || ',' || SHUXUE || ',' || YINGYU || ','
知道下面 查上面!在不知道有什么kemu的情况下