첨부한 그림이 제 질문을 이해하기 쉽게할텐데요
먼저 마농님 감사합니다.
필드끼리 데이터를 비교해서 큰 데이터를 가지고잇는 필드순으로 정열을시려는데
행번호를 사용해서 오름차순으로 하면 한 필드내에서만 데이터를 비교하는데
가로행 데이터들을 세로열로 바꿔서 오름차순으로 바꾼다음에 원래 행으로 데이터들을
보내주면서 필드들도 데이터에 맞게 자리를 찾아가는 그런걸로 생각해봣는데 비슷할지 모르겟네요 이런방법을 사용해서 순위를 매기는건지요?
색깔별로 구분해봣는데 한번 각 색깔별로 어떤 역할들을 하고있는지 고수님들 한수 부탁드립니다.ㅠ;
부분별로 나눠서 돌려봣는데 결과를보면 한 필드내 세로끼리 비교를 하네요..
SELECT TD_OA, TD_OB, TD_OC,TD_OD,TD_OE,TD_OF,TD_OG,TD_OH,TD_OI,
TD_AO,TD_AA,TD_AB,TD_AC,TD_AD,TD_AE,TD_AF,TD_AG,TD_AH,TD_AI,TD_BO,TD_BA,TD_BB,TD_BC,TD_BD
, MIN(DECODE(RN,1,MAX1)) TD, MIN(DECODE(RN,2,MAX1)) TD, MIN(DECODE(RN,3,MAX1)) TD, MIN(DECODE(RN,4,MAX1)) TD, MIN(DECODE(RN,5,MAX1)) TD, MIN(DECODE(RN,6,MAX1)) TD
, MIN(DECODE(RN,7,MAX1)) TD, MIN(DECODE(RN,8,MAX1)) TD, MIN(DECODE(RN,9,MAX1)) TD, MIN(DECODE(RN,10,MAX1)) TD, MIN(DECODE(RN,11,MAX1)) TD, MIN(DECODE(RN,12,MAX1)) TD
, MIN(DECODE(RN,13,MAX1)) TD, MIN(DECODE(RN,14,MAX1)) TD, MIN(DECODE(RN,15,MAX1)) TD, MIN(DECODE(RN,16,MAX1)) TD, MIN(DECODE(RN,17,MAX1)) TD, MIN(DECODE(RN,18,MAX1)) TD
, MIN(DECODE(RN,19,MAX1)) TD, MIN(DECODE(RN,20,MAX1)) TD, MIN(DECODE(RN,21,MAX1)) TD, MIN(DECODE(RN,22,MAX1)) TD, MIN(DECODE(RN,23,MAX1)) TD, MIN(DECODE(RN,24,MAX1)) TD
FROM
(
SELECT TD_OA, TD_OB, TD_OC,TD_OD,TD_OE,TD_OF,TD_OG,TD_OH,TD_OI,TD_AO,
TD_AA,TD_AB,TD_AC,TD_AD,TD_AE,TD_AF,TD_AG,TD_AH,TD_AI,TD_BO,TD_BA,TD_BB,TD_BC,TD_BD,
DECODE(lv,1,TD_oa,lv,2,TD_ob,lv,3,TD_oc,lv,4,TD_od,lv,5,TD_oe,lv,6,TD_of
,lv,7,TD_og,lv,8,TD_oh,lv,9,TD_oi,lv,10,TD_ao,lv,11,TD_aa,lv,12,TD_ab
,lv,13,TD_ac,lv,14,TD_ad,lv,15,TD_ae,lv,16,TD_af,lv,17,TD_ag,lv,18,TD_ah
,lv,19,TD_ai,lv,20,TD_bo,lv,21,TD_ba,lv,22,TD_bb,lv,23,TD_bc,lv,24,TD_bd) MAX1,
ROW_NUMBER() OVER(PARTITION BY TD_OA, TD_OB, TD_OC,TD_OE,TD_OF,TD_OG,TD_OH,TD_OI,TD_AO,
TD_AA,TD_AB,TD_AC,TD_AD,TD_AE,TD_AF,TD_AG,TD_AH,TD_AI,TD_BO,TD_BA,TD_BB,TD_BC,TD_BD
ORDER BY DECODE(lv,1,TD_oa,lv,2,TD_ob,lv,3,TD_oc,lv,4,TD_od,lv,5,TD_oe,lv,6,TD_of
,lv,7,TD_og,lv,8,TD_oh,lv,9,TD_oi,lv,10,TD_ao,lv,11,TD_aa,lv,12,TD_ab
,lv,13,TD_ac,lv,14,TD_ad,lv,15,TD_ae,lv,16,TD_af,lv,17,TD_ag,lv,18,TD_ah
,lv,19,TD_ai,lv,20,TD_bo,lv,21,TD_ba,lv,22,TD_bb,lv,23,TD_bc,lv,24,TD_bd) DESC) RN
FROM (select
Round(AVG(SUM(TD_OA)))TD_OA, Round(AVG(SUM(TD_OB)))TD_OB, Round(AVG(SUM(TD_OC)))TD_OC,
Round(AVG(SUM(TD_OD)))TD_OD, Round(AVG(SUM(TD_OE)))TD_OE, Round(AVG(SUM(TD_OF)))TD_OF,
Round(AVG(SUM(TD_OG)))TD_OG, Round(AVG(SUM(TD_OH)))TD_OH, Round(AVG(SUM(TD_OI)))TD_OI,
Round(AVG(SUM(TD_AO)))TD_AO, Round(AVG(SUM(TD_AA)))TD_AA, Round(AVG(SUM(TD_AB)))TD_AB,
Round(AVG(SUM(TD_AC)))TD_AC, Round(AVG(SUM(TD_AD)))TD_AD, Round(AVG(SUM(TD_AE)))TD_AE,
Round(AVG(SUM(TD_AF)))TD_AF, Round(AVG(SUM(TD_AG)))TD_AG, Round(AVG(SUM(TD_AH)))TD_AH,
Round(AVG(SUM(TD_AI)))TD_AI, Round(AVG(SUM(TD_BO)))TD_BO, Round(AVG(SUM(TD_BA)))TD_BA,
Round(AVG(SUM(TD_BB)))TD_BB, Round(AVG(SUM(TD_BC)))TD_BC, Round(AVG(SUM(TD_BD)))TD_BD
from system.ACCTEST_DS
WHERE YYYYMMDT in to_char(to_date('20071225','yyyymmdd')-(7*1), 'yyyymmdd')
or YYYYMMDT in to_char(to_date('20071225','yyyymmdd')-(7*2), 'yyyymmdd')
or YYYYMMDT in to_char(to_date('20071225','yyyymmdd')-(7*3), 'yyyymmdd')
group by yyyymmdt)
,(SELECT LEVEL lv FROM dual CONNECT BY LEVEL <=1))
group by YYYYMMDT,TD_OA,TD_OB,TD_OC,TD_OD,TD_OE,TD_OF,TD_OG,TD_OH,TD_OI,TD_AO,
TD_AA,TD_AB,TD_AC,TD_AD,TD_AE,TD_AF,TD_AG,TD_AH,TD_AI,TD_BO,TD_BA,TD_BB,TD_BC,TD_BD;