小妹刚刚接触oracle,现在想查一个含有住院患者手术信息(手术编码---手术日期---手术操作名称---切口愈合)的数据,关联数据库中的住院病人基础信息表和手术操作表,基础信息表中主键为住院序号,手术操作表中主键是手术序号,两表关联字段为住院序号。
由于一个病人同一次住院过程中可能要做多个手术,或不做手术,所以手术操作表中一个住院序号对应0、1或多条(可能大于5条)记录。
但现在要求查询结果中一个住院序号只能对应一条记录,其中手术信息部分需要显示为手术信息1、手术信息2、...手术信息5的格式。
请问sql应该怎么写呢?请坛子里各位大牛指点指点,感激不尽~
由于一个病人同一次住院过程中可能要做多个手术,或不做手术,所以手术操作表中一个住院序号对应0、1或多条(可能大于5条)记录。
但现在要求查询结果中一个住院序号只能对应一条记录,其中手术信息部分需要显示为手术信息1、手术信息2、...手术信息5的格式。
请问sql应该怎么写呢?请坛子里各位大牛指点指点,感激不尽~
用wm_concat函数select id,wm_concat(num) from tb
group by id
a_caseinfo_export
--字段:住院序号、姓名
ninhosid,name
-------------------------------------------------------------------
--手术操作表
a_caseopsinfo
--字段:手术序号、住院序号、手术编码、手术日期、手术操作名称、切口、切口等级
opsid,ninhosid,opscode,opsdate,opsname,cutlevel,level
--------------------------------------------------------------------
--查询结果需要形如:
住院序号--姓名---手术编码1---手术日期1---手术操作名称1---切口1---切口等级1---手术编码2---手术日期2---手术操作名称2---切口2---切口等级2---...---手术编码5---手术日期5---手术操作名称5---切口5---切口等级5
希望能用sql搞定。pl/sql完全不懂。
谢谢各位啦!
select a.ninhosid as 住院序号,b.name as 姓名,a.opscode as 手术编码1,a.opsdate as 手术日期1,a.opsname as 手术操作名称 ```
from a_caseinfo_export b,a_caseopsinfo a
where 条件 如果需要的话??
select a.ninhosid as 住院序号,b.name as 姓名,a.opscode as 手术编码1,a.opsdate as 手术日期1,a.opsname as 手术操作名称 ```
from a_caseinfo_export b,a_caseopsinfo a
where a.ninhosid = b.ninhosid
and 其他条件 如果需要的话
create or replace procedure proc(tabname in varchar2,
col1 in varchar2,
col2 in varchar2,
col3 in varchar2,
viewname in varchar2 default 'v_tmp')
as
sqlstr varchar2(2000):='create or replace view '||viewname||' as select '||col1||' ';
c1 sys_refcursor;
v1 varchar2(100);
begin
open c1 for 'select distinct to_char('||col2||') from '||tabname;
loop
fetch c1 into v1;
exit when c1%notfound;
sqlstr:=sqlstr||'
,max(decode('||col2||','''||v1||''','||col3||'))"'||v1||'"';
end loop;
close c1;
sqlstr:=sqlstr||' from '||tabname||' group by '||col1;
execute immediate sqlstr;
end proc;