> 데이터 베이스 > MySQL 튜토리얼 > SQL Server 2005에서 알 수 없는 열이 있는 데이터를 동적으로 피벗하는 방법은 무엇입니까?

SQL Server 2005에서 알 수 없는 열이 있는 데이터를 동적으로 피벗하는 방법은 무엇입니까?

Mary-Kate Olsen
풀어 주다: 2025-01-13 09:46:43
원래의
786명이 탐색했습니다.

How to Dynamically Pivot Data with Unknown Columns in SQL Server 2005?

SQL Server 2005 동적 피벗

SQL Server 2005에서는 알 수 없는 열 수를 사용한 피벗 작업이 까다로울 수 있습니다. 이 기사에서는 이러한 문제에 대한 해결책을 살펴봅니다.

질문:

SQL Server 2005에서 알 수 없는 수의 열이 있는 데이터를 동적으로 피벗하는 방법은 무엇입니까? 원하는 출력은 고유한 학생을 행으로, 과제를 나타내는 동적 열로 마감일별로 정렬한 테이블과 유사해야 합니다. 가능하다면 "총계" 열이 마지막에 나타나야 합니다.

정답:

SQL Server 2005의 제한으로 인해 동적 피벗을 구현하려면 동적 SQL을 사용해야 할 수도 있습니다. 가능한 솔루션 중 하나는 DMV(동적 관리 뷰)와 XML을 활용하여 동적 SQL 문을 생성하는 것입니다.

<code class="language-sql">DECLARE @DynamicSQL NVARCHAR(MAX) = N'';

-- 从表中获取不同的作业名称
SELECT DISTINCT AssignmentName
INTO #AssignmentNames
FROM TableName;

-- 循环遍历作业名称
SELECT @DynamicSQL = @DynamicSQL + '
  MAX(CASE WHEN AssignmentName = ''' + AssignmentName + ''' THEN Grade END) AS ' + AssignmentName + ','

FROM #AssignmentNames;

-- 删除动态 SQL 语句末尾的逗号
SET @DynamicSQL = LEFT(@DynamicSQL, LEN(@DynamicSQL) - 1);

-- 构造用于透视的最终动态 SQL 语句
SET @DynamicSQL = 'SELECT StudentName, ' + @DynamicSQL + '
  FROM TableName
  GROUP BY StudentName;';

-- 执行动态 SQL 语句
EXEC sp_executesql @DynamicSQL;</code>
로그인 후 복사

이 방법은 테이블에 식별된 다양한 작업 이름을 기반으로 피벗하는 데 필요한 열이 포함된 동적 SQL 문을 생성합니다.

참고:

이 솔루션에는 동적 SQL이 포함되어 있지만 SQL 문은 알려지고 신뢰할 수 있는 데이터로 구성되므로 주입 공격에 취약하지 않습니다. 또는 데이터가 자주 변경되는 경우 코드 생성을 구현하여 필요한 SQL 문으로 저장 프로시저를 만드는 것을 고려하세요.

위 내용은 SQL Server 2005에서 알 수 없는 열이 있는 데이터를 동적으로 피벗하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿