sql - query without union pivot select -


hello have query below execution time long. please introduced me try different solution .there query(oracle 10g)

select *   (with t (select cor_id, cor_cod, wei1, days, 'wei1' wei_type                      (table))          select *            t pivot(max(wei1) for(days) in('01' day_01,                                                '02' day_02,                                                '03' day_03,                                                '04' day_04,                                                '05' day_05,                                                '06' day_06,                                                '07' day_07,                                                '08' day_08))) union   (with t (select cor_id, cor_cod, wei2, days, 'wei2' wei_type                      (table))          select *            t pivot(max(wei2) for(days) in('01' day_01,                                                '02' day_02,                                                '03' day_03,                                                '04' day_04,                                                '05' day_05,                                                '06' day_06,                                                '07' day_07,                                                '08' day_08))) union   (with t (select cor_id, cor_cod, wei3, days, 'wei3' wei_type                      (table))          select *            t pivot(max(wei3) for(days) in('01' day_01,                                                '02' day_02,                                                '03' day_03,                                                '04' day_04,                                                '05' day_05,                                                '06' day_06,                                                '07' day_07,                                                '08' day_08)))   


how change query without union ?
that result this: that result this:

to this: to this:
please me

you have table several wei columns , separate rows days. , want result several day columns , separate rows weis instead. transformation rows columns and columns rows.

your query looks appropriate task. only, using union should union all. union all glues records together, want. union same looks duplicates remove. 3 partial queries don't produce duplicates - differ @ least in wei_type. change union union all, dbms doesn't have work, should result in faster query.

and here alternative query neither using union nor union all on table. cross joins weis produce these rows , aggregates/pivots day rows columns.

select    cor_id, cor_cod, wei_type, day_01, day_02, day_03, day_04, day_05, day_06, day_07, day_08 (   select     t.cor_id, t.cor_cod, t.days, w.wei_type,     case w.wei_type when 'wei1' t.wei1 when 'wei2' t.wei2 else t.wei3 end wei   thetable t   cross join    (     select 'wei1' wei_type dual     union     select 'wei2' wei_type dual     union     select 'wei3' wei_type dual   ) w ) pivot  (    max(wei) for(days) in     (      '01' day_01, '02' day_02, '03' day_03, '04' day_04,      '05' day_05, '06' day_06, '07' day_07, '08' day_08    ) ) order cor_id, cor_cod, wei_type; 

and here same conditional aggregation instead of pivot same.

select    cor_id, cor_cod, wei_type,   max(case when days = '01' wei end) day_01,   max(case when days = '02' wei end) day_02,   max(case when days = '03' wei end) day_03,   max(case when days = '04' wei end) day_04,   max(case when days = '05' wei end) day_05,   max(case when days = '06' wei end) day_06,   max(case when days = '07' wei end) day_07,   max(case when days = '08' wei end) day_08 (   select     t.cor_id, t.cor_cod, t.days, w.wei_type,     case w.wei_type when 'wei1' t.wei1 when 'wei2' t.wei2 else t.wei3 end wei   thetable t   cross join    (     select 'wei1' wei_type dual     union     select 'wei2' wei_type dual     union     select 'wei3' wei_type dual   ) w ) group cor_id, cor_cod, wei_type order cor_id, cor_cod, wei_type; 

Comments

Popular posts from this blog

java - Run spring boot application error: Cannot instantiate interface org.springframework.context.ApplicationListener -

reactjs - React router and this.props.children - how to pass state to this.props.children -

Excel VBA "Microsoft Windows Common Controls 6.0 (SP6)" Location Changes -