SQL의 동적 열 생성을 통해 동적 입력을 기반으로 유연한 데이터 구조 구축이 가능합니다. 다음 시나리오를 고려해보세요.
Customers
고객 세부정보(ID 및 이름)가 포함된 테이블 CustomerRewards
테이블에는 보상 유형(TypeID 및 설명)이 포함되어 있습니다. Rewards
고객과 리워드를 연결하는 테이블 목표는 보상 유형을 나타내는 열을 동적으로 생성하고 각 유형의 고객 보상 수를 계산하는 것입니다.
이를 위해 SQL의 PIVOT 함수를 사용할 수 있습니다.
<code class="language-sql">SELECT name, [Bronze], [Silver], [Gold], [Platinum], [AnotherOne] FROM ( SELECT c.name, cr.description, r.typeid FROM customers AS c LEFT JOIN rewards AS r ON c.id = r.customerid LEFT JOIN customerrewards AS cr ON r.typeid = cr.typeid ) AS x PIVOT ( COUNT(typeid) FOR description IN ([Bronze], [Silver], [Gold], [Platinum], [AnotherOne]) ) AS p;</code>
여기서 PIVOT 함수는 description
필드를 기준으로 행을 열로 변환하여 각 보상 유형에 대한 개수를 표시합니다.
열 개수를 알 수 없는 경우 동적 SQL을 사용할 수 있습니다.
<code class="language-sql">DECLARE @cols AS NVARCHAR(MAX), @query AS NVARCHAR(MAX); SELECT @cols = STUFF( ( SELECT ',' + QUOTENAME(description) FROM customerrewards GROUP BY description, typeid ORDER BY typeid FOR XML PATH(''), TYPE ).value('.', 'NVARCHAR(MAX)'), 1, 1, '' ); SET @query = 'SELECT name, ' + @cols + ' FROM ( SELECT c.name, cr.description, r.typeid FROM customers AS c LEFT JOIN rewards AS r ON c.id = r.customerid LEFT JOIN customerrewards AS cr ON r.typeid = cr.typeid ) AS x PIVOT ( COUNT(typeid) FOR description IN (' + @cols + ') ) AS p '; EXECUTE (@query);</code>
동적 쿼리는 customerrewards
테이블의 값을 기반으로 열을 생성합니다.
'합계' 열을 포함하려면 ROLLUP 연산자를 사용할 수 있습니다.
<code class="language-sql">SELECT name, SUM([Bronze]) AS Bronze, SUM([Silver]) AS Silver, SUM([Gold]) AS Gold, SUM([Platinum]) AS Platinum, SUM([AnotherOne]) AS AnotherOne FROM ( SELECT name, [Bronze], [Silver], [Gold], [Platinum], [AnotherOne] FROM ( SELECT c.name, cr.description, r.typeid FROM customers AS c LEFT JOIN rewards AS r ON c.id = r.customerid LEFT JOIN customerrewards AS cr ON r.typeid = cr.typeid ) AS x PIVOT ( COUNT(typeid) FOR description IN ([Bronze], [Silver], [Gold], [Platinum], [AnotherOne]) ) AS p ) AS x1 GROUP BY name WITH ROLLUP;</code>
동적으로 열을 생성하면 변화하는 데이터 구조를 효율적으로 처리하고 데이터를 포괄적인 방식으로 표시할 수 있습니다.
위 내용은 데이터 분석을 위해 SQL에서 열을 동적으로 생성하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!