2011年3月5日 星期六

SQL 多筆資料成為一筆 by XML functions

1.
with mv as (
            select idnrk,b.small_group
              from sap_bom a,mes_mv_small_class b
             where a.idnrk between 'C00' and 'C62'
               and stlst = '1'
               and a.matnr = b.matnr
               and b.middle_group in ('Top View','Side View','Chip LED','High Power')
             group by idnrk,b.small_group
             order by 1
           )
select idnrk,ltrim(extract(xmlagg(xmlelement("small_group",','||small_group)),'/small_group/text()').getstringval(),',')
       small_groups
  from mv
 group by idnrk

SMALL_GROUPS會以 "," 分隔

Result
IDNRK             SMALL_GROUPS
C01RZ0109-000A    3804
C01RZ0109-001A    3804
C01RZ0109-002A    3804
C01RZ0431-000B    5050
C01RZ0431-001B    5050
C01RZZ613-001A    3804
C01RZZ813-000A    1615
C01RZZ913-001A    0603RE
C01RZZ913-002A    0603RE
C01RZZ913-003A    0603RE
C02RZZ913-000A    0603AM
C02RZZ913-001A    0603AM
C03RZZ713-000A    0603YL
C03RZZ813-000A    0603YL
C03RZZ913-000A    0603YL
C03RZZ913-001A    0603YL
C04RZZ913-000A    0603YG
C04RZZ913-001A    0603YG
C05RA2603-000A    0603GS,1615
C05RA2603-001A    0603GS,1615
C05RA2603-002A    0603GS,1615
C05RA2603-003A    0603GS,1615
C05RA2603-008A    0603GS


2.
with mv as (
            select empno, b.codevalue ktsch
              from dwmgr.mes_tbl_certification a,hr_tbl_codedetail b
             where a.ktsch = b.codeid
             group by empno,b.codevalue
             order by 1,2
           )
select empno,ltrim(extract(xmlagg(xmlelement("ktsch",','||ktsch)),'/ktsch/text()').getstringval(),',')
       ktsch,count(*) cnt
  from mv
 group by empno


EMPNO    KTSCH    CNT
89003    包裝,測試,收發料,捲目    4
89004    收發料,測試    2
90004    捲目    1
90005    包裝,測試    2
90007    PLASMA,打線    2
90008    固晶-Chip,控片    2
90010    包裝,測試    2
90015    壓模,戳膠    2
90017    包裝,測試    2
90019    包裝,測試,收發料    3
90020    戳膠    1
90022    包裝,測試    2
90023    捲目    1
90024    固晶-Chip    1
90028    包裝,測試    2
90030    收發料,測試    2
90031    包裝,測試    2
90036    離心機,點膠    2
90037    打線    1
90038    沖壓,目檢    2
90039    打線,控片    2
91009    封裝膠烘烤,控片    2
91014    切割,目檢,熱測(WB),沖壓,戳膠,封裝膠烘烤,壓模    7
91016    戳膠,沖壓    2
91019    捲目    1
91022    切割,目檢    2
91025    捲目    1
91026    PLASMA,打線    2

沒有留言:

張貼留言