一个主表 和一个明细表 通过一个 编号关联 主表与明细表示的关系是一对多
怎样实现 上图的功能
下面是把明细表交叉可是把所有数据查出来了declare s varchar2(32767);
s1 integer:=0;begin
s := 'select sheetno , ';
for v_cur in (select distinct GUESTREMARK1,MALFUNCTION,ISMAIN,FITTINGCODE,CCT,REPAIRMODULE,ISCHANGE from wx_sheet_nokia_detail )
loop
s1:=s1+1;
s:=s||' max(case GUESTREMARK1 when '''|| v_cur.GUESTREMARK1 ||''' then GUESTREMARK1 else '''' end ) as 故障现象代码'|| to_char(s1) ||',';
s:=s||' max(case MALFUNCTION when '''|| v_cur.MALFUNCTION ||''' then MALFUNCTION else '''' end ) as 故障原因代码'|| to_char(s1) ||',';
s:=s||' max(case ISMAIN when '|| v_cur.ISMAIN ||' then ISMAIN else 3 end ) as 是否主要维修'|| to_char(s1) ||',';
s:=s||' max(case FITTINGCODE when '''|| v_cur.FITTINGCODE ||''' then FITTINGCODE else '''' end ) as 备件编号'|| to_char(s1) ||',';
s:=s||' max(case CCT when '''|| v_cur.CCT ||''' then CCT else '''' end ) as CCT'|| to_char(s1) ||',';
s:=s||' max(case REPAIRMODULE when '''|| v_cur.REPAIRMODULE ||''' then REPAIRMODULE else '''' end ) as REPAIRMODULE'|| to_char(s1) ||',';
s:=s||' max(case ISCHANGE when '|| v_cur.ISCHANGE ||' then ISCHANGE else 3 end ) as 是否更换备件'|| to_char(s1) ||',';
end loop;
s := substr(s,0,length(s)-1) ||' from wx_sheet_nokia_detail group by sheetno'; dbms_output.put_line(s);end;
OracleSQL
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货