질문) 오라클 질문있습니다! 0 5 1,383

by 도지니 [2016.11.10 16:32:38]


학과번호 학과명 이름 번호
11 컴공 alex 1 1
11 컴공 alex 1 2
11 컴공 tore 2 1
11 컴공 tore 2 3
11 컴공 toto 3 1

상단 테이블을 하단 테이블로 변형을하고싶습니다.

학과번호 학과명 이름 번호 팀1 팀2
11 컴공 alext 1 1 2  
11 컴공 tore 2 1 3  
11 컴공 toto 3 1    

이렇게 변형해서 나타내줄수 있는 방법이 궁금합니다!

예를 든 테이블이며 팀은 1,2번이아닌 10,12 등등 다양합니다..ㅠ

by 우리집아찌 [2016.11.10 16:57:20]

select 학과번호,학과명,이름,min(번호),max(팀)

 from 테이블

group by 학과번호 ,학과명,이름


by 도지니 [2016.11.10 17:32:02]

이렇게 진행하면 번호 최소값하고 팀 최대값이 나오네요

 


by 랑에1 [2016.11.10 17:07:51]
WITH T AS (
SELECT 11 학과번호, '컴공' 학과명, 'alex' 이름, 1 번호, 1 팀 FROM dual UNION ALL 
SELECT 11, '컴공', 'alex', 1, 2 FROM dual UNION ALL 
SELECT 11, '컴공', 'tore', 2, 1 FROM dual UNION ALL 
SELECT 11, '컴공', 'tore', 2, 3 FROM dual UNION ALL 
SELECT 11, '컴공', 'toto', 3, 1 FROM dual
)

SELECT 학과번호, 학과명, 이름, 번호, MIN(DECODE(rn, 1, 팀)) 팀, MIN(DECODE(rn, 2, 팀)) 팀1, MIN(DECODE(rn, 3, 팀)) 팀2
FROM 
(
  SELECT T.*, ROW_NUMBER() OVER(PARTITION BY 학과번호,학과명,이름,번호 ORDER BY 팀) rn
  FROM T
)
GROUP BY 학과번호, 학과명, 이름, 번호
ORDER BY 학과번호, 번호

이런거 원하시는 건가요?


by 도지니 [2016.11.10 17:32:59]

이러한 루틴이면 많은 양의 데이터를 처리할때는 모두 작성을 처리해야하는건지 궁금합니다!

학과번호,학교명이 11~140번 과 이름이 1000개 이상의 데이터라면 어떻게..처리를 진행해야할까요?ㅠㅠㅠ

 

 


by 마농 [2016.11.10 18:03:32]

UNION ALL 로 작성 하라는 의미가 아닙니다.

WITH 절을 뺀 SELECT 절의 작성 방법을 참고하시면 됩니다.

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