>데이터 베이스 >MySQL 튜토리얼 >SQL Server에서 동적 피벗 열을 만드는 방법은 무엇입니까?

SQL Server에서 동적 피벗 열을 만드는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2025-01-07 18:41:40678검색

How to Create Dynamic Pivot Columns in SQL Server?

SQL Server 동적 피벗 테이블 열에 대한 자세한 설명

SQL Server에서 피벗 테이블은 행을 열로 변환하여 데이터의 모양을 변경하는 데 사용됩니다. 그러나 열 이름이 동적이고 사전에 알려지지 않은 경우 피벗 테이블을 수동으로 생성하는 것이 어려워집니다. 이 문서에서는 테이블에서 피벗 열을 동적으로 생성하여 이 문제에 대한 솔루션을 살펴봅니다.

다음 열이 포함된 속성 테이블이 있다고 가정합니다.

<code>Id    Name</code>

특정 개체의 속성 값을 저장하는 PropertyObjects 테이블도 있습니다.

<code>Id    Object_Id    Property_Id    Value</code>

우리의 목표는 각 열이 속성 테이블에 정의된 속성에 해당하고 각 열에 해당 속성 및 개체 ID의 값이 표시되는 피벗 테이블을 만드는 것입니다.

피벗 열을 동적으로 생성하려면 다음 단계를 사용할 수 있습니다.

  1. 다양한 속성 이름 모두 가져오기:
<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가 생성됩니다.

  1. 피벗 쿼리 작성:
<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가 작성됩니다.

  1. 쿼리 실행:
<code class="language-sql">EXEC sp_executesql @query;</code>

@query를 실행하면 속성 테이블에서 동적으로 생성된 열 이름이 포함된 피벗 테이블이 반환됩니다.

위 단계를 통해 동적 열 이름을 효과적으로 처리하여 유연하고 확장 가능한 피벗 테이블을 만들 수 있습니다. 이 방법은 동적 SQL을 사용하므로 SQL 주입 위험을 피하기 위해 사용하기 전에 데이터 보안을 확인해야 합니다.

위 내용은 SQL Server에서 동적 피벗 열을 만드는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.