사용유무 체크 관련 쿼리 0 4 1,585

by 하트세이버 [SQL Query] [2014.04.23 17:05:32]


SELECT '01' GB, 'A' USR FROM dual UNION ALL
SELECT '01' GB, 'B' USR FROM dual UNION ALL
SELECT '02' GB, 'C' USR FROM dual UNION ALL
SELECT '03' GB, 'D' USR FROM dual UNION ALL
SELECT '02' GB, 'A' USR FROM dual

위의 예시 테이블을 아래의 표와 같이 표현하고 싶습니다.

GB USR USE
01 A Y
01 B Y
01 C N
01 D N
02 A Y
02 B N
02 C Y
02 D N
03 A N
03 B N
03 C N
03 D Y

 

by 부쉬맨 [2014.04.23 17:30:35]

사용유무의 조건이없네요...

멀가지고 Y인지 N인지 판단할여부가..


by 하트세이버 [2014.04.23 17:37:21]

USR A 가 GB 01을 포함하면 USE Y

USR B 가 GB 01을 포함하면 USE Y

반대로 

USR A 는 GB 03을 포함하지 않으므로 USE N

이런식의 조건입니다.


by 마농 [2014.04.23 17:51:18]
-- 1. PARTITION OUTER JOIN --
SELECT b.gb
     , a.usr
     , NVL2(b.usr, 'Y', 'N') use
  FROM (SELECT DISTINCT usr FROM t) a -- 코드 테이블 별도 존재한다면 그걸 이용하세요.
  LEFT OUTER JOIN t b
  PARTITION BY (b.gb)
    ON (a.usr = b.usr)
 ORDER BY gb, usr
;
-- 2. MODEL --
SELECT *
  FROM t
 MODEL
 PARTITION BY (gb)
 DIMENSION BY (usr)
 MEASURES ('Y' use)
 RULES ( use[FOR usr IN (SELECT DISTINCT usr FROM t)] = NVL(use[CV()], 'N') )
 ORDER BY gb, usr
;

 


by 하트세이버 [2014.04.24 15:38:15]

답변 감사드립니다. 1번 방법으로 해결했습니다.

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