SQL 질문입니다.. 0 2 1,464

by 신재경 [2008.06.23 16:24:52]


안녕하세요... 갑자기 이런경우는 어떻게 하면 될지 생각해 보다 잘 풀리지 않아 질문올립니다.. ^^;;

 

Table A

No Seq Desc
1 1 A
1 2 B
1 999 ZZ
2 1 Q
2 999 RR
3 1 W
... ... ....

위와같은 테이블이 있을때..

출력결과를

 

No Seq Desc Seq2 Desc2
1 1 A 999 ZZ
1 2 B 999 ZZ
2 1 Q 999 RR
3 1 W 999 UU
3 2 E 999 UU
3 3 Y 999 UU
... ... ... ... ...

이렇게 하고싶은데 어떻게 하면 될까요??

 

동일한 No에 대해 Seq가 999인 값을 Seq가 999가 아닌 다른 값 뒤에 붙이는...

고수님들의 많은 관심 부탁드립니다.. (_ _)

아!!! 테이블은 한번만 읽고 가능해야 합니다.. ㅎㅎ ^^;;;


SELECT b.no,
       b.seq,
       b.DESC,
       c.seq,
       c.DESC
  FROM (SELECT * FROM tbl_a a WHERE a.seq <> 999) b,
       (SELECT * FROM tbl_a a WHERE a.seq = 999) c
 WHERE b.no = c.no;

요런 SQL 말구요..ㅎㅎ

 

by 채용근 [2008.06.23 16:41:55]
SELECT * FROM (
SELECT NO
, SEQ
, "DESC"
, MAX(DECODE ( SEQ, '999', SEQ )) OVER( PARTITION BY NO ORDER BY NO, SEQ DESC ) SEQ2
, MAX(DECODE ( SEQ, '999', "DESC" )) OVER( PARTITION BY NO ORDER BY NO, SEQ DESC ) DESC2
FROM (
SELECT '1' NO, '1' SEQ, 'A' "DESC" FROM DUAL UNION ALL
SELECT '1', '2', 'B' FROM DUAL UNION ALL
SELECT '1', '999', 'ZZ' FROM DUAL UNION ALL
SELECT '2', '1', 'Q' FROM DUAL UNION ALL
SELECT '2', '999', 'RR' FROM DUAL UNION ALL
SELECT '3', '1', 'W' FROM DUAL
)
) WHERE SEQ NOT IN ( '999' )

by 신재경 [2008.06.24 08:42:19]
하핫!!! ^^
채용근님~ 감사합니다~~
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입