데이타를 가로로 출력하려 합니다. 0 3 1,381

by 김용환 [SQL Query] [2010.10.06 13:04:10]



형식은

ID C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 a b c d e f
1 a b b a b c a c d a 4 3 2 1 0 0
2 b b e d c e a a b d 2 3 1 2 2 0
3 a c b d e f a c a d 3 1 2 2 1 1

이런식으로 나오게 하려 합니다.

c1~c10 컬럼에 1 2,3 로우에는 a~f 가 들어가며

a~f 컬럼엔 1,2,3 로우에 있는 a~f 들의 갯수를 카운트 한겁니다.

현재 c1~c10 1로우엔 a~f 를 입력 하였으나... 2,3 로우 들과 a~f 컬럼의 카운트 넣는데서

헤매고 있네요;;

고수님들의 좋은 조언 부탁 드리겠습니다!
by 포비 [2010.10.06 14:54:46]
WITH TA AS
(
SELECT 'a' C1, 'b' C2, 'b' C3, 'a' C4, 'b' C5, 'c' C6, 'a' C7, 'd' C8, 'a' C9 FROM DUAL UNION ALL
SELECT 'b' C1, 'b' C2, 'e' C3, 'd' C4, 'c' C5, 'e' C6, 'a' C7, 'a' C8, 'b' C9 FROM DUAL UNION ALL
SELECT 'a' C1, 'c' C2, 'b' C3, 'd' C4, 'e' C5, 'f' C6, 'a' C7, 'c' C8, 'a' C9 FROM DUAL
)
SELECT C1 , C2 , C3 , C4 , C5 , C6 , C7 , C8 , C9,
( LENGTH(STR) - LENGTH( REPLACE(STR,'a'))) / LENGTH('a') a,
( LENGTH(STR) - LENGTH( REPLACE(STR,'b'))) / LENGTH('b') b,
( LENGTH(STR) - LENGTH( REPLACE(STR,'c'))) / LENGTH('c') c,
( LENGTH(STR) - LENGTH( REPLACE(STR,'d'))) / LENGTH('d') d,
( LENGTH(STR) - LENGTH( REPLACE(STR,'e'))) / LENGTH('e') e,
( LENGTH(STR) - LENGTH( REPLACE(STR,'f'))) / LENGTH('f') f
from(
SELECT C1 , C2 , C3 , C4 , C5 , C6 , C7 , C8 , C9,
C1 || C2 || C3 || C4 || C5 || C6 || C7 || C8 || C9 AS STR
FROM TA)


C9컬럼까지만 C10컬럼 생략 응용해서 해보세요.

by 포비 [2010.10.06 15:06:00]
( 총합 - ( 총합에서 자기를 제외한 개수 ) ) / (자기자신)
여기에서는 1이니까 나누지 않아도 되네요?

by 김용환 [2010.10.06 15:27:04]
앗! 감사합니다! 이제야 해결했네요;
멍청하게 가로로 데이타를 쭉 입력해야 하는데...
UNION ALL을 세로로 쭉!!! 내려갔으니;; 안됐네요 흐;
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입