join좀 문의 드립니다. 1 3 678

by 라미너스 [SQL Query] [2016.06.16 21:47:06]


문의좀 드립니다.

 SELECT RATE ,USER_ID

FROM TB_RATE

WHERE YYYYMM='201606';

이런식으로 데이타를 가져오고 싶습니다.

user_id rate(201606) rate(201605)
dongho.kim 1  
kildong.kim   1
dongsu.lee 1  

TB_RATE라는 테이블에 YYYYMM='201605' 즉 지난달 데이타를 가져와서 이번달 데이타가 있는 사람은 이번달 RATE를

없으면 지난달 RATE 데이타를 가져오는 셀렉트문을 만들고 싶은데요

자기자신에 join을 걸어서  가져오려면 어떻게 해야하나요?

 

 

 

by 마농 [2016.06.17 09:05:31]
SELECT user_id
     , MIN(DECODE(yyyymm, :ym, rate)) rate_current
     , MIN(DECODE(yyyymm, :ym, null, rate)) rate_before
  FROM tb_rate
 WHERE yyyymm IN (:ym, TO_CHAR(TO_DATE(:ym, 'yyyymm')-1, 'yyyymm'))
 GROUP BY user_id
;

 


by 라미너스 [2016.06.17 10:21:34]

감사합니다 이표현이 맞는건가요?
     , MIN(DECODE(yyyymm, '201606', rate)) rate_current
     , MIN(DECODE(yyyymm, '201605', null, rate)) rate_before
  FROM TB_RATE
 WHERE yyyymm IN ('201606', '201605')
 
 GROUP BY USER_ID
;


by 마농 [2016.06.17 11:23:01]

:ym 은 입력 조건 변수이고 현재월 '201606' 입니다.
조건 하나만으로 전월까지 처리하기 위해 위와 같이 한거구요.
전월 조건(201605)까지 이미 계산되어 주어진다면 다음과 같이 하면 되겠지요.
 

SELECT user_id
     , MIN(DECODE(yyyymm, '201606', rate)) rate_current
     , MIN(DECODE(yyyymm, '201605', rate)) rate_before
  FROM tb_rate
 WHERE yyyymm IN ('201606', '201605')
 GROUP BY user_id
;

 

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