보존 연관성이 있는 고유 레코드에 대한 PIVOT 쿼리
개인의 활동 및 비율이 포함된 데이터가 포함된 테이블이 있는 시나리오를 생각해 보세요. MAX 함수를 사용하는 표준 PIVOT 쿼리에서는 백분율 값이 0인 활동을 간과할 수 있습니다. 이 문제를 해결하기 위해 우리는 활동과 백분율 사이의 관계를 유지하는 솔루션을 도입합니다.
이를 달성하기 위해 우리는 ROW_NUMBER() 함수를 공통 테이블 표현식(CTE)에 통합하여 각 활동 내의 활동을 순차적으로 정렬합니다. 이름 그룹. 이 기술을 사용하면 PIVOT 쿼리가 여러 행에 걸쳐 활동과 백분율 간의 연관성을 유지할 수 있습니다.
수정된 쿼리의 예는 다음과 같습니다.
;with cte as ( select *, ROW_NUMBER() over (partition by name order by percentage desc) ROWNUM from A ), cte2 as ( SELECT Id,Code,ROWNUM,James,James_,Sam,Sam_,Lisa,Lisa_ FROM cte PIVOT(MAX(activity) FOR name IN (James,Sam,Lisa)) AS PVTTable PIVOT ( MAX(percentage) FOR name1 IN (James_,Sam_,Lisa_)) AS PVTTable1 ) select Id, Code, MAX(James) James, MAX(James_) James_, MAX(Sam) Sam, MAX(Sam_) Sam_, MAX(Lisa) Lisa, MAX(Lisa_) Lisa_ from cte2 group by Id, Code, ROWNUM
CTE, cte는 ROWNUM을 추가합니다. 열을 초기 테이블에 추가하고 각 이름에 대한 활동을 백분율 내림차순으로 정렬합니다. 이러한 순서를 사용하면 후속 PIVOT 쿼리가 데이터를 올바르게 그룹화하고 집계할 수 있습니다.
쿼리의 출력은 예상 결과와 유사하며, 여기서 고유한 활동은 해당 이름 및 비율과 연결됩니다.
Id Code James James_ Sam Sam_ Lisa Lisa_ 1 Prashant Running 43.43 Cooking 1 73 Walking 90.34 1 Prashant Stealing 0.00 Cooking 3.43 NULL NULL 1 Prashant Lacking 0.00 NULL NULL NULL NULL
이 기술을 사용하면 백분율 값이 0인 레코드에 대해서도 활동과 백분율 간의 연관성을 유지하면서 완전하고 정확한 PIVOT 결과를 얻을 수 있습니다.
위 내용은 연관을 유지하고 0 값을 처리하면서 고유 레코드에 대해 PIVOT 쿼리를 수행하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!