SQL Server 2000을 사용한 피벗 변환
문제:
데이터베이스에 두 개의 테이블이 포함되어 있습니다. 제품 및 제품 메타(다음 포함) 구조:
Products: - ProductId - Name Product Meta: - ProductId - MetaKey - MetaValue
이 데이터를 MetaKey 열을 기반으로 MetaValue 열을 피벗하는 결과 집합으로 변환하려고 합니다. 원하는 결과 집합은 다음과 같습니다.
ProductId | Name | A | B | C
해결책:
이전에 제안된 솔루션이 최적이 아닐 수도 있지만 그럼에도 불구하고 집계 함수 또는 하위 쿼리의 사용을 강조합니다. 유효한 그룹화를 보장합니다. 대체 접근 방식은 다음과 같습니다.
SELECT P.ProductId, P.Name, MAX(CASE WHEN PM.MetaKey = 'A' THEN PM.MetaValue END) AS A, MAX(CASE WHEN PM.MetaKey = 'B' THEN PM.MetaValue END) AS B, MAX(CASE WHEN PM.MetaKey = 'C' THEN PM.MetaValue END) AS C FROM Products AS P LEFT JOIN ProductMeta AS PM ON PM.ProductId = P.ProductId GROUP BY P.ProductId, P.Name;
이 쿼리는 Products 및 Product Meta 테이블을 조인하여 결과를 ProductId 및 Name별로 그룹화합니다. 집계 함수 MAX()는 각 MetaKey에 대한 최대 MetaValue를 추출하는 데 사용됩니다. 이렇게 하면 각 키에 대한 최신 메타값만 결과 세트에 포함됩니다.
위 내용은 JOIN 및 집계 함수를 사용하여 SQL Server 2000에서 제품 메타데이터를 피벗하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!