> 데이터 베이스 > MySQL 튜토리얼 > SQL을 사용하여 고유 ID와 월 조합에 대한 열, 피벗 데이터 및 합계 수를 연결하는 방법은 무엇입니까?

SQL을 사용하여 고유 ID와 월 조합에 대한 열, 피벗 데이터 및 합계 수를 연결하는 방법은 무엇입니까?

DDD
풀어 주다: 2025-01-03 18:09:40
원래의
687명이 탐색했습니다.

How can SQL be used to concatenate columns, pivot data, and sum counts for unique ID and month combinations?

SQL을 사용하여 열 연결 및 데이터 피벗

문제:

다음과 같은 데이터베이스가 있습니다. ID, 유형, 하위 유형, 개수 및 월을 나타내는 열입니다. 유형과 하위 유형이 새 열로 연결되고 ID와 월의 각 고유 조합에 대해 개수가 합산되는 새로운 형식으로 이 데이터를 어떻게 변환할 수 있습니까?

해결책:

이렇게 변환된 출력을 얻으려면 SQL Server 2005에서 PIVOT 연산자를 활용할 수 있습니다. PIVOT 연산자를 사용하면 행을 동적으로 변환할 수 있습니다. 열.

다음 코드 조각은 PIVOT을 사용하여 원하는 결과를 얻는 방법을 보여줍니다.

DECLARE @sql AS varchar(max)
DECLARE @pivot_list AS varchar(max) -- Leave NULL for COALESCE technique
DECLARE @select_list AS varchar(max) -- Leave NULL for COALESCE technique

SELECT @pivot_list = COALESCE(@pivot_list + ', ', '') + '[' + PIVOT_CODE + ']'
        ,@select_list = COALESCE(@select_list + ', ', '') + 'ISNULL([' + PIVOT_CODE + '], 0) AS [' + PIVOT_CODE + ']'
FROM (
    SELECT DISTINCT [TYPE] + '_' + SUBTYPE AS PIVOT_CODE
    FROM stackoverflow_159456
) AS PIVOT_CODES

SET @sql = '
;WITH p AS (
    SELECT ID, [MONTH], [TYPE] + ''_'' + SUBTYPE AS PIVOT_CODE, SUM([COUNT]) AS [COUNT]
    FROM stackoverflow_159456
    GROUP BY ID, [MONTH], [TYPE] + ''_'' + SUBTYPE
)
SELECT ID, [MONTH], ' + @select_list + '
FROM p
PIVOT (
    SUM([COUNT])
    FOR PIVOT_CODE IN (
        ' + @pivot_list + '
    )
) AS pvt
'

EXEC (@sql)
로그인 후 복사

구현 세부 정보:

  1. 동적 피벗 목록 생성: 코드는 피벗 열 목록을 동적으로 생성합니다. 원본 테이블에 있는 유형과 하위 유형의 고유한 조합을 기반으로 합니다.
  2. PIVOT 쿼리 작성: 기본 PIVOT 쿼리는 먼저 테이블을 그룹화하는 "p"라는 공통 테이블 표현식(CTE)을 생성합니다. ID, 월, 연결된 유형 및 하위 유형별 데이터입니다. 그런 다음 각 그룹의 개수를 합산합니다.
  3. 행을 열로 바꾸기: PIVOT 연산자는 CTE "p"에 적용되어 행을 열로 바꿉니다. 피벗 열 목록은 @pivot_list 변수를 사용하여 동적으로 생성됩니다.
  4. Null 값 처리(선택 사항): COALESCE 함수를 사용하면 @select_list 변수의 ISNULL() 조건을 사용할 수 있습니다. 피벗된 열의 null 값을 0으로 바꾸는 데 사용됩니다.

@sql 변수를 실행하면 다음이 반환됩니다. 연결된 열과 합산된 개수가 있는 원하는 테이블. 이 솔루션을 사용하면 복잡한 데이터를 효율적이고 동적으로 집계할 수 있습니다.

위 내용은 SQL을 사용하여 고유 ID와 월 조합에 대한 열, 피벗 데이터 및 합계 수를 연결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿