2017-10-31 17 views
0

필자에게 필요한 테이블이 여러 행으로 구성되어 있으며, 모두 새 테이블에 추가했습니다.SQL 모든 행을 하나의 열로 - 연결 없음

내 모든 행을 하나의 행으로 변환해야합니다.

+-------+-----------+-------+--------+ 
| ID | Name | Last | Gender | 
+-------+-----------+-------+--------+ 
| 1 | Person1 | Last1 | M | 
| 2 | Person2 | Last2 | F | 
| 3 | Person3 | Last3 | M | 
| 4 | Person4 | Last4 | F | 
+-------+-----------+-------+--------+ 

나는 아래에 위의 표를 변환해야합니다

+-------+------------+------------+ 
| NewID | ColumnName | Value | 
+-------+------------+------------+ 
|  1 | ID   | 1  | 
|  1 | Name  | Person1 | 
|  1 | Last  | Last1 | 
|  1 | Gender  | M  | 
|  2 | ID   | 2  | 
|  2 | Name  | Person2 | 
|  2 | Last  | Last2 | 
|  2 | Gender  | F  | 
|  3 | ID   | 3  | 
|  3 | Name  | Person3 | 
|  3 | Last  | Last3 | 
|  3 | Gender  | M  | 
|  4 | ID   | 4  | 
|  4 | Name  | Person4 | 
|  4 | Last  | Last4 | 
|  4 | Gender  | F  | 
|  |   |   | 
+-------+------------+------------+ 
+3

사용중인 데이터베이스에 질문을 태그하십시오. –

답변

1

가장 일반적인 방법은 union all을 사용하는 것입니다 : 이것은 기본적으로 모든 데이터베이스에서 작동한다

select 'id' as columnname, cast(id as varchar(255)) as value from t union all 
select 'name', name as value from t union all 
select 'last', last as value from t union all 
select 'gender', gender as value from t; 

, 문자열로 캐스트가 다를 수 있지만. 일부 데이터베이스는보다 효율적인 다른 솔루션을 제공합니다.

+0

답장을 보내 주신 모든 분들께 감사드립니다 !!! 잠깐 동안 나는 여기에 "이런"순간을 보냈다. –

1

연합 (EU) 행복 솔루션을.

select 'id' as columnname, id as value from table 
union all 
select 'name' as columnname, name as value from table 
union all 
.e 
.t 
.c