무슨 조인을 해야 ?(한번만 더 봐주세요) 0 5 1,135

by 커피향 [2014.08.05 11:56:42]


WITH t AS
(
SELECT  '20140101' dtseq, 0 seq     from dual
UNION ALL SELECT '20140101', 1    FROM dual
UNION ALL SELECT '20140101', 2    FROM dual)
select * from t

WITH s AS
(
SELECT  '001' sa,  '20140101' dtseq, 0 seq     from dual
UNION ALL SELECT '001', '20140101', 1    FROM dual
UNION ALL SELECT '002', '20140101', 1    FROM dual
UNION ALL SELECT '002', '20140101', 2    FROM dual
)
select * from s

WITH r AS
(
SELECT  '001' sa,  '20140101' dtseq, 0 seq     from dual
UNION ALL SELECT '001', '20140101', 1    FROM dual
UNION ALL SELECT '001', '20140101', 2    FROM dual
UNION ALL SELECT '002', '20140101', 0    FROM dual
UNION ALL SELECT '002', '20140101', 1    FROM dual
UNION ALL SELECT '002', '20140101', 2    FROM dual
)

t와 s를 조인해서 r 처럼 나오게 하려면 어떻게 해야 하나요.

답변 부탁드립니다.
 

by 아발란체 [2014.08.05 13:11:16]
WITH T AS (
  SELECT  '20140101' dtseq, 0 seq from dual
  UNION ALL SELECT '20140101', 1 FROM dual
  UNION ALL SELECT '20140101', 2 FROM dual
), S AS (
  SELECT  '001' sa,  '20140101' dtseq, 0 seq     from dual
  UNION ALL SELECT '001', '20140101', 1    FROM dual
  UNION ALL SELECT '002', '20140101', 1    FROM dual
  UNION ALL SELECT '002', '20140101', 2    FROM dual
)
SELECT
  sa, dtseq, seq
FROM
  T CROSS JOIN (SELECT DISTINCT sa FROM S)
ORDER BY
  sa, seq
;

 


by 마농 [2014.08.05 13:14:37]
SELECT s.sa, t.dtseq, t.seq
  FROM t
  LEFT OUTER JOIN s
  PARTITION BY (s.sa)
    ON t.dtseq = s.dtseq
   AND t.seq   = s.seq
;

 


by 커피향 [2014.08.05 13:55:21]
SELECT s.sa, t.dtseq, t.seq
FROM t
LEFT OUTER JOIN s
PARTITION BY (s.sa)
ON t.dtseq = s.dtseq
AND t.seq = s.seq
AND T.SEQ = 2     <---- 이 조건으로는 검색이 안될까요?              
;
 
결과가 아래와 같이 나오도록 하고 싶은경우
 
WITH 검색 AS
(
SELECT '001', '20140101', 2    FROM dual
UNION ALL SELECT '002', '20140101', 2    FROM dual
)
select * from 검색

by DarkBee [2014.08.05 14:00:54]

    ON t.dtseq = s.dtseq
   AND t.seq   = s.seq
  WHERE T.SEQ = 2


by 커피향 [2014.08.05 14:04:28]

자문자답

SELECT s.sa, t.dtseq, t.seq
FROM t
LEFT OUTER JOIN s
PARTITION BY (s.sa)
ON (t.dtseq = s.dtseq
    AND t.seq = s.seq )
WHERE T.SEQ = 2  ;
 
감사합니다.
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입