SQL Server에서 피벗 테이블은 행을 열로 변환하여 데이터의 모양을 변경하는 데 사용됩니다. 그러나 열 이름이 동적이고 사전에 알려지지 않은 경우 피벗 테이블을 수동으로 생성하는 것이 어려워집니다. 이 문서에서는 테이블에서 피벗 열을 동적으로 생성하여 이 문제에 대한 솔루션을 살펴봅니다.
다음 열이 포함된 속성 테이블이 있다고 가정합니다.
<code>Id Name</code>
특정 개체의 속성 값을 저장하는 PropertyObjects 테이블도 있습니다.
<code>Id Object_Id Property_Id Value</code>
우리의 목표는 각 열이 속성 테이블에 정의된 속성에 해당하고 각 열에 해당 속성 및 개체 ID의 값이 표시되는 피벗 테이블을 만드는 것입니다.
피벗 열을 동적으로 생성하려면 다음 단계를 사용할 수 있습니다.
<code class="language-sql">DECLARE @cols AS NVARCHAR(MAX); DECLARE @query AS NVARCHAR(MAX); SELECT @cols = STUFF((SELECT DISTINCT ',' + QUOTENAME(Name) FROM property FOR XML PATH(''), TYPE ).value('.', 'NVARCHAR(MAX)'), 1, 1, '');</code>
이렇게 하면 모든 속성의 이름을 포함하는 쉼표로 구분된 문자열 @cols가 생성됩니다.
<code class="language-sql">SET @query = 'SELECT * FROM ( SELECT o.object_id, p.Name, o.value FROM propertyObjects AS o INNER JOIN property AS p ON o.Property_Id = p.Id ) AS t PIVOT ( MAX(value) FOR Name IN (' + @cols + ') ) AS p;';</code>
이렇게 하면 피벗 논리가 포함된 동적 SQL 쿼리 @query가 작성됩니다.
<code class="language-sql">EXEC sp_executesql @query;</code>
@query를 실행하면 속성 테이블에서 동적으로 생성된 열 이름이 포함된 피벗 테이블이 반환됩니다.
위 단계를 통해 동적 열 이름을 효과적으로 처리하여 유연하고 확장 가능한 피벗 테이블을 만들 수 있습니다. 이 방법은 동적 SQL을 사용하므로 SQL 주입 위험을 피하기 위해 사용하기 전에 데이터 보안을 확인해야 합니다.
위 내용은 SQL Server에서 동적 피벗 열을 만드는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!