>데이터 베이스 >MySQL 튜토리얼 >JOIN 및 집계 함수를 사용하여 SQL Server 2000에서 제품 메타데이터를 피벗하는 방법은 무엇입니까?

JOIN 및 집계 함수를 사용하여 SQL Server 2000에서 제품 메타데이터를 피벗하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2025-01-02 18:29:39408검색

How to Pivot Product Metadata in SQL Server 2000 using a JOIN and Aggregate Function?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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