[SQL] SQL : 실시간 트랜스
SQLSQL : 실시간 트랜스
나는 피벗 및 UNPIVOT에 대해 알고. 그게 내가 원하는 것이 아니다. 피벗 및 UNPIVOT 집계 데이터,하지만 내가 원하는 것이 아니다.
매트릭스 (선형 대수)과 같은 테이블을 생각해. 내가 m의 X N 행렬로 시작하는 경우에, 나는 n x m 행렬에 그 매트릭스 (테이블) 변환 할. 나는 진정한 TRANSPOSE를 원한다.
어떻게 SQL에서이 작업을 수행 할 수 있습니다?
예를 들어 내가있는 경우 :
1 2 3
1 2 4
6 7 8
3 2 1
3 9 1
결과는해야한다 :
1 1 6 3 3
2 2 7 2 9
3 4 8 1 1
행의 수는 열 수, 그 반대가됩니다 것을 알 수 있습니다. 내가 그룹화 또는 데이터의 집계되지 않았 음을 또한은 예고. 소스의 모든 단일 값이 존재하는 결과에 존재하고, 그 X-Y 좌표는 교체되었다.
해결법
-
==============================
1.당신은 당신이 UNPIVOT과 PIVOT으로이 작업을 수행 할 수 없다고 생각하는 이유는 확실하지 오전 :
당신은 당신이 UNPIVOT과 PIVOT으로이 작업을 수행 할 수 없다고 생각하는 이유는 확실하지 오전 :
select [1], [2], [3], [4], [5] from ( select * from ( select col1, col2, col3, row_number() over(order by col1) rn from yourtable ) x unpivot ( val for col in (col1, col2, col3) ) u ) x1 pivot ( max(val) for rn in ([1], [2], [3], [4], [5]) ) p
데모와 SQL 바이올린을 참조하십시오. 필요한 경우이 동적으로 수행 할 수 있습니다.
열 순서 요구가 계속 될 경우 편집, 당신은 여기에 비 결정적 행 번호를 사용하는 방법에 대한 기사는 (테이블의 열 중 하나에 의해 순서를 사용하지 않고 ROW_NUMBER을 적용 같은 것을 ()를 사용할 수 있습니다 ) :
select [1], [2], [3], [4], [5] from ( select * from ( select col1, col2, col3, row_number() over(order by (select 1)) rn from yourtable ) x unpivot ( val for col in (col1, col2, col3) ) u ) x1 pivot ( max(val) for rn in ([1], [2], [3], [4], [5]) ) p;
데모와 SQL 바이올린을 참조하십시오
from https://stackoverflow.com/questions/12696225/sql-real-transpose by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 여러 열을 일치 뚜렷한 결과를 제공 SQL 쿼리 (0) | 2020.06.13 |
---|---|
[SQL] plpgsql의 트리거 기능에 여러 열을 업데이트 (0) | 2020.06.13 |
[SQL] 점진적는 OR 쿼리 식을 구축 [중복] (0) | 2020.06.13 |
[SQL] 마이크로 소프트 액세스 2010 .accdb에 대한 SQL 연결 문자열 (0) | 2020.06.13 |
[SQL] MS Access에서 CONCAT 동등한 (0) | 2020.06.13 |