2015-01-14 3 views
1

에 기초하여 복수의 행에 행 I 다음 데이터가 :분할 열 값 DB2

Sr no....EMP_ID....Location...Period1....Value1....Period2....Value2....Period3....Value3 
...1......Emp001....India........Salary.....10000.....Bonus.....1000.......Bonus code...AB 
...2......Emp002....UK...........Salary.....20000.....Bonus.....2000.......Bonus code...CD 

는 I 출력 같이 원한다

Sr no....EMP_ID....Location....Period...Value 
....1......Emp001....India.......Salary.....10000 
....2......Emp001....India.......Bonus.....1000 
....3......Emp001....India.......Bonus Code.....AB 
....4......Emp002....UK.......Salary.....20000 
....5......Emp002....UK.......Bonus.....2000 
....6......Emp002....UK.......Bonus Code.....CD 
+0

MySQL, DB2를 사용하고있는 데이터베이스는 무엇입니까? 그에 따라 질문에 태그를 달아야합니다. –

답변

2

이것이 UNPIVOT 동작이다. 당신은 당신이 union all으로 원하는 것을 할 수 있습니다

select EmpNo, Location, Period1 as period, Value1 as Value 
from data 
union all 
select EmpNo, Location, Period2 as period, Value2 as Value 
from data 
union all 
select EmpNo, Location, Period3 as period, Value3 as Value 
from data; 

일부 데이터베이스는 UNPIVOT에 대한 직접적인 지원뿐만 아니라 그 일을 다른 방법이있다. 그러나 위의 ANSI 표준 SQL 것입니다.

+0

OP의 예상 출력과 다를 점은'Sr no'입니다. –

+0

수천 명의 직원이 있다면 ..? – HunTer

+1

그러면 수천 개의 행이 생성됩니다. 수천 개의 행에 대해 '합집합'모두 합리적으로 효율적이어야합니다. –