TSQL에서 여러 열 피벗
관계형 데이터베이스로 작업할 때 보고 목적으로 데이터를 재구성해야 하는 경우가 많습니다. 피벗(Pivoting)은 데이터를 행 중심 구조에서 열 중심 구조로 변환하는 데 사용할 수 있는 기술입니다. 이 문서에서는 관련 레이블을 모두 유지하면서 테이블의 여러 열을 피벗하는 방법을 보여줍니다.
과제
GRAND_TOTALS라는 이름의 다음 테이블을 고려해 보세요.
RATIO | RESULT | SCORE | GRADE |
---|---|---|---|
Current Ratio | 1.294 | 60 | Good |
Gearing Ratio | 0.3384 | 70 | Good |
Performance Ratio | 0.0427 | 50 | Satisfactory |
TOTAL | NULL | 180 | Good |
목표는 RESULT, SCORE 및 GRADE 열을 피벗하여 다음과 같은 테이블을 만드는 것입니다. 형식:
RATIO | Current Ratio | Gearing Ratio | Performance Ratio | TOTAL |
---|---|---|---|---|
Result | 1.294 | 0.3384 | 0.0427 | NULL |
Score | 60 | 70 | 50 | 180 |
Grade | Good | Good | Satisfactory | Good |
해결책
여러 열을 효과적으로 피벗하려면 다음 단계를 고려하세요.
결과, 점수 및 성적 피벗 해제 열:
피벗 해제에는 여러 열 변환이 포함됩니다. 원래 열 이름을 추적하면서 단일 열로 묶습니다. 이는 UNPIVOT 절을 사용하여 달성할 수 있습니다. 아래 구문은 열 피벗을 해제하는 방법을 보여줍니다.
select ratio, col, value from GRAND_TOTALS cross apply ( select 'result', cast(result as varchar(10)) union all select 'score', cast(score as varchar(10)) union all select 'grade', grade ) c(col, value)
이 쿼리는 RATIO, COL 및 VALUE 열이 있는 새 테이블을 생성합니다. 여기서 COL은 원래 열 이름(결과, 점수 또는 등급)을 나타냅니다. ) 및 VALUE에는 해당 값이 포함됩니다.
PIVOT 적용 기능:
데이터 피벗이 해제되면 PIVOT 기능을 적용하여 데이터를 원하는 형식으로 변환할 수 있습니다. 피벗 구문은 다음과 같습니다.
select ratio = col, [current ratio], [gearing ratio], [performance ratio], total from ( select ratio, col, value from GRAND_TOTALS cross apply ( select 'result', cast(result as varchar(10)) union all select 'score', cast(score as varchar(10)) union all select 'grade', grade ) c(col, value) ) d pivot ( max(value) for ratio in ([current ratio], [gearing ratio], [performance ratio], total) ) piv;
이 쿼리에서 PIVOT 함수는 RATIO 열을 기준으로 행을 그룹화하고 COL 값을 열 머리글로 사용하여 데이터를 피벗합니다. MAX 집계 함수는 각 행의 최신 값을 검색하는 데 사용됩니다.
결과
위 쿼리를 실행하면 원하는 피벗 테이블이 생성됩니다. :
RATIO | Current Ratio | Gearing Ratio | Performance Ratio | TOTAL |
---|---|---|---|---|
grade | Good | Good | Satisfactory | Good |
result | 1.29400 | 0.33840 | 0.04270 | NULL |
score | 60.00000 | 70.00000 | 50.00000 | 180.00000 |
이 테이블은 필요한 모든 레이블을 유지하고 원하는 열을 성공적으로 피벗합니다.
위 내용은 보고용 데이터를 재구성하기 위해 T-SQL에서 여러 열을 피벗하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!