오라클 반기계산 방법 좀 부탁드립니다. 0 4 4,439

by sun [SQL Query] [2014.06.17 09:50:26]


안녕하세요.. 며칠전 이곳 도움으로 잘 해결했습니다만.. 또 한번 부탁드려야될것 같습니다. 이것저것 해보다 도저히 안돼서

올립니다.

다름 아니라 2013년도 전반기를 조건에 입력하면

2013년도 상반기포함하여  이전 최종 3년치를 조회하려고 합니다.

즉 2013년도 상반기 (2013 / 1)

    2012년도 하반기(2012 / 2)

    2012년도 상반기(2012 / 1)

   2011년도 하반기(2011 / 2)

   2011년도 상반기(2011 / 1)

   2010년도 하반기(2010 / 2)

이걸 구하려고 합니다.

컬럼은   년도 컬럼(year), 상하반기 구분컬럼(bangi) (상반기:'1' 하반기: '2')

이렇게 있습니다. 위 리스트를 구할 수 있는 쿼리 좀 부탁드리겠습니다.

 

by 약쟁이총각 [2014.06.17 10:19:20]

어떠한 데이터가 있는데.. 어떠한 결과값이 필요한지 말해주셔야 할듯..

글을 읽을수록 잘 모르겠네요.. ㅜㅜ


by sun [2014.06.17 10:34:26]

질문이 부족했던거 같습니다.

테이블  년도/ 반기구분/ 사번/ 평가1/평가2 (pk : 년도/반기구분/사번) 대략 이정도의 자료가 있습니다.

이것을 조건에 2013년도 상반기로 입력해서 조회시

사번 / 2013년도 상반기  평가1 /  평가2  / 2012년도 하반기 평가1/평가2 / 2012년도 상반기 평가1/평가2 /  2011년도 하반기 평가1 / 평가2 / 2011년도 상반기 평가1/평가2 / 2010년도 하반기 평가1/평가2

식으로 나타내려고 합니다. 총 3개년도의 6개반기로 옆으로 나열할려고 합니다.

 

 


by 마농 [2014.06.17 11:16:56]
WITH 기준 AS
(
-- 기준년도 조회 --
SELECT lv
     , TO_CHAR(year - CEIL((lv-bangi)/2)) year
     , TO_CHAR(2 - MOD(lv-bangi+1, 2)) bangi
  FROM (SELECT '2013' year, '1' bangi FROM dual)
     , (SELECT LEVEL lv FROM dual CONNECT BY LEVEL <= 6)
)
SELECT b.sabun
     , MIN(DECODE(a.lv, 1, b.평가1)) 평가1_1
     , MIN(DECODE(a.lv, 1, b.평가2)) 평가2_1
     , MIN(DECODE(a.lv, 2, b.평가1)) 평가1_2
     , MIN(DECODE(a.lv, 2, b.평가2)) 평가2_2
     , MIN(DECODE(a.lv, 3, b.평가1)) 평가1_3
     , MIN(DECODE(a.lv, 3, b.평가2)) 평가2_3
     , MIN(DECODE(a.lv, 4, b.평가1)) 평가1_4
     , MIN(DECODE(a.lv, 4, b.평가2)) 평가2_4
     , MIN(DECODE(a.lv, 5, b.평가1)) 평가1_5
     , MIN(DECODE(a.lv, 5, b.평가2)) 평가2_5
     , MIN(DECODE(a.lv, 6, b.평가1)) 평가1_6
     , MIN(DECODE(a.lv, 6, b.평가2)) 평가2_6
  FROM 기준 a
     , 평가 b
 WHERE a.year  = b.year
   AND a.bangi = b.bangi
 GROUP BY b.sabun
 ORDER BY b.sabun
;

 


by sun [2014.06.17 12:41:23]

딱 제가 원하는 답변이네요..

참말로 부럽습니다..

정말 감사합니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입