表t有数据库记录如下:
题目序号 题目名称 题目类型 题目答案 答题人
1 最爱球队 多选 马刺 小明
1 最爱球队 多选 湖人 小明
2 最爱教练 多选 姐夫 小红
2 最爱教练 多选 禅师 小红
3 最爱裁判 多选 光头 小红想得到的结果是
题目序号 题目名称 题目类型 题目答案 答题人
1 最爱球队 多选 马刺;湖人 小明
2 最爱教练 多选 姐夫;禅师 小红
3 最爱裁判 多选 光头 小红请问sql怎么合并?
题目序号 题目名称 题目类型 题目答案 答题人
1 最爱球队 多选 马刺 小明
1 最爱球队 多选 湖人 小明
2 最爱教练 多选 姐夫 小红
2 最爱教练 多选 禅师 小红
3 最爱裁判 多选 光头 小红想得到的结果是
题目序号 题目名称 题目类型 题目答案 答题人
1 最爱球队 多选 马刺;湖人 小明
2 最爱教练 多选 姐夫;禅师 小红
3 最爱裁判 多选 光头 小红请问sql怎么合并?
解决方案 »
- 一个触发器的问题(急)
- OCI连接池报weblogic.rjvm.PeerGoneException: ; nested exception is: 错误
- 这样2条sql有差么?
- 我想在Oracle中存大量的汉字,应该用什么字段?请教 。。
- 一个奇快的sql语句!!
- 存储过程语法的问题
- 哪里有像sql server中事件探测器一样的oracle工具下载?
- 原来是搞sql server的,现在又要搞oracle,难学吗?有什么要注意的地方?
- oracle中有没有与SQL Server中的@@error类似的参数
- oracle pdb创建用户之后如何使用sql developer登陆
- 一道小的问题....关于查询的...高手来帮帮忙...谢谢了
- 关于oracle的 enterprise manager console 的登陆问题!
9i :sys_connect_by_pathhttp://topic.csdn.net/u/20090310/10/3246b8b0-8ecd-4c05-8756-b96c2a5274e8.html
select sid,ocontent from qc_subject_option where sid=40012;
得出以下结果
1 40012 <div>A.1部</div>
2 40012 <div>B.2部</div>
3 40012 <div>C.3部</div>
4 40012 <div>D.3部以上(请填写)</div>
按照你给的连接,我看了,写了
select sid,substr(max(sys_connect_by_path(ocontent,'/')),2) arr
from (
select sid,ocontent,row_number() over(order by ocontent) rn
from qc_subject_option where sid=40012
)
start with rn=1
connect by rn-1=prior rn
group by sid;
但是报错
ora-30004:when using sys_connect_by_path function,cannot have seperator as part of column value
ID NUMBER(2)
TITLE VARCHAR2(20)
TYPE VARCHAR2(8)
AWNER VARCHAR2(10)
PERSON VARCHAR2(10)
);insert into t values(1,'最爱球队','多选','马刺,'小明');insert into t values(1,'最爱球队','多选','湖人','小明');insert into t values(1,'最爱球队','多选','湖x人','小明');insert into t values(2,'最爱教练,'多选','姐夫','小明');insert into t values(2,'最爱教练,'多选','禅师','小明');insert into t values(3,'最爱裁判,'多选','光头','小明');
select id,title,type,rtrim(awner,',') awner,person
from(
select id,title,type,rn,
awner||','||lead(awner) over(partition by id order by id) awner,
person
from (
select id,title,type,
awner||','||lead(awner) over(partition by id order by id) awner,
row_number() over(partition by id order by id) rn ,
person
from t
)
where mod(rn,2)<>0
)
where rn=1
1 40028 1 <div>A.1部</div> 0 40012 0
2 40029 2 <div>B.2部</div> 0 40012 0
3 40030 3 <div>C.3部</div> 0 40012 0
4 40031 4 <div>D.3部以上(请填写)</div> 1 40012 0我要得到结果为1 40012 0 <div>A.1部</div>;<div>B.2部</div>;<div>C.3部</div>
2 40012 1 <div>D.3部以上(请填写)</div>但是我用了
select sid,isfill,substr(max(sys_connect_by_path(ocontent,';')),2) arr
from (
select sid,isfill,ocontent,row_number() over(order by ocontent) rn
from qc_subject_option where sid=40012
)
start with rn=1
connect by rn-1=prior rn
group by sid,isfill;出来的结果是
1 40012 0 <div>A.1部</div>;<div>B.2部</div>;<div>C.3部</div>
2 40012 1 <div>A.1部</div>;<div>B.2部</div>;<div>C.3部</div>;<div>D.3部以上(请填写)</div>怎么样才能得到我想要的结果?分不够可以加