SQL Server 2005를 사용한 동적 피벗 데이터
SQL Server 2005에서는 알 수 없는 열 수를 포함하는 데이터를 피벗 형식으로 변환해야 할 수도 있습니다. 이 문서에서는 이러한 과제를 살펴보고 SQL Server 2005 기술을 사용하는 솔루션을 제공합니다.
질문:
학생의 과제와 성적이 저장되는 특정 데이터세트를 생각해 보세요. 원하는 출력은 모든 과제에 대한 각 학생의 성적과 마지막에 총 성적을 보여주는 피벗 테이블입니다. 결정적으로 이는 다양한 수의 작업을 수용할 수 있도록 역동적이어야 합니다. 또한 과제 마감일을 기준으로 정렬하고 쿼리에서 전체 성적을 제외하는 것도 이상적입니다.
솔루션(동적 SQL):
동적 SQL은 일반적으로 권장되지 않지만 이 경우 가장 실용적인 솔루션을 제공합니다. 다음은 피벗된 결과 집합을 생성하는 동적 SQL 스크립트의 예입니다.
<code class="language-sql">DECLARE @sql NVARCHAR(MAX) SET @sql = 'SELECT StudentName, ' + STUFF(( SELECT ',[' + AssignmentName + ']' FROM AssignmentNames FOR XML PATH('') ), 1, 1, '') + ' FROM Assignments PIVOT (SUM(Grade) FOR AssignmentName IN (' + STUFF(( SELECT ',' + AssignmentName FROM AssignmentNames FOR XML PATH('') ), 1, 1, '') + ')) AS PivotTable' -- 执行生成的SQL EXEC sp_executesql @sql</code>
지침:
이 동적 SQL 접근 방식은 작업 번호 변경을 처리하고 작업 기한을 기준으로 정렬하는 유연성을 제공합니다. 그러나 동적으로 생성된 SQL을 다시 확인하여 악의적인 입력에 취약하지 않은지 확인하십시오.
대안:
위 내용은 알 수 없는 수의 열을 처리하기 위해 SQL Server 2005에서 데이터를 동적으로 피벗하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!