본문 바로가기

카테고리 없음

오라클에서 열을 행으로 변환하는 UNPIVOT 방법을 알려드립니다.

1. UNPIVOT란?

UNPIVOT는 데이터베이스에서 열을 행으로 변환하는 작업을 의미합니다. 일반적으로 데이터베이스에서 테이블은 행과 열의 형태로 구성되는데, UNPIVOT을 사용하면 열로 저장된 데이터를 행으로 변환하여 보다 다양한 분석 및 쿼리 작업을 수행할 수 있습니다. UNPIVOT은 오라클에서 제공하는 기능으로, 사용자가 지정한 열을 행으로 변환해주는 역할을 합니다.

UNPIVOT을 사용하면 열의 데이터를 행으로 변환할 수 있으며, 이를 통해 데이터의 유연한 분석과 처리가 가능해집니다. 다양한 분석 작업에서 필요한 데이터 형태에 따라 UNPIVOT을 통해 데이터를 변환하여 사용할 수 있습니다. UNPIVOT을 활용하면 복잡한 분석 작업을 보다 쉽게 수행할 수 있으며, 데이터 처리의 효율성도 향상될 수 있습니다.

UNPIVOT은 오라클에서 제공하는 SQL 기능 중 하나이며, 쿼리문을 사용하여 데이터의 열과 행을 변환하는 방식으로 동작합니다. UNPIVOT을 사용하여 데이터를 효율적으로 분석하고 가공하여 사용할 수 있으므로, 데이터 처리와 분석에 많은 도움이 되는 기능입니다.

2. UNPIVOT 구문 및 사용법

UNPIVOT은 오라클에서 제공하는 SQL 기능으로, 데이터의 열을 행으로 변환하는 작업을 수행합니다. UNPIVOT 구문은 다음과 같은 형식으로 작성됩니다.

SELECT *
FROM TABLE_NAME
UNPIVOT (
  NEW_COLUMN_NAME FOR OLD_COLUMN_NAME IN (COLUMN1, COLUMN2, COLUMN3)
) ;

위의 구문에서 TABLE_NAME은 UNPIVOT을 적용할 테이블의 이름을 나타냅니다. NEW_COLUMN_NAME은 새로 생성될 열의 이름을 정의하며, OLD_COLUMN_NAME은 기존 열의 이름을 나타냅니다. IN 키워드를 사용하여 UNPIVOT을 적용할 기존 열들을 지정할 수 있습니다.

예를 들어, 다음과 같은 테이블이 있다고 가정해봅시다.

+---------+------+------+------+
| ID      | Col1 | Col2 | Col3 |
+---------+------+------+------+
| 1       | A    | B    | C    |
| 2       | D    | E    | F    |
+---------+------+------+------+

위의 테이블에서 UNPIVOT을 사용하여 데이터를 변환하고자 한다면, 아래와 같이 구문을 작성할 수 있습니다.

SELECT *
FROM table_name
UNPIVOT (
  value
  FOR column_name IN (Col1, Col2, Col3)
) ;

이렇게 구문을 작성하면 UNPIVOT이 적용된 결과를 조회할 수 있습니다.

+----+------+-------+
| ID | Col   | Value |
+----+------+-------+
| 1  | Col1 | A     |
| 1  | Col2 | B     |
| 1  | Col3 | C     |
| 2  | Col1 | D     |
| 2  | Col2 | E     |
| 2  | Col3 | F     |
+----+------+-------+

위의 예시에서는 ID 열이 변함없이 그대로 유지되고, Col1, Col2, Col3 열이 새로운 열의 이름으로 변환되어 출력되었습니다.

UNPIVOT을 사용하여 열을 행으로 변환할 수 있습니다. 이를 통해 원하는 형태의 데이터로 변환하여 보다 쉽고 효율적으로 분석 및 처리 작업을 수행할 수 있습니다.

3. UNPIVOT의 활용 예시

UNPIVOT은 데이터의 열을 행으로 변환하여 다양한 분석 및 처리 작업에 유용하게 활용될 수 있습니다. 아래는 UNPIVOT의 활용 예시입니다.

예시 1: 열의 값 비교와 분석

만약 다음과 같은 테이블이 있다고 가정해봅시다.

+------+-------+------+------+------+
| Year | Col1  | Col2 | Col3 | Col4 |
+------+-------+------+------+------+
| 2020 | 100   | 200  | 300  | 400  |
| 2021 | 150   | 250  | 350  | 450  |
+------+-------+------+------+------+

위의 테이블에서는 각 연도별로 Col1, Col2, Col3, Col4 열의 값이 기록되어 있습니다. 이때 UNPIVOT을 사용하여 연도와 열의 값을 비교하여 분석할 수 있습니다.

SELECT *
FROM table_name
UNPIVOT (
  value
  FOR column_name IN (Col1, Col2, Col3, Col4)
) ;

위의 구문을 실행하면 다음과 같은 결과를 얻을 수 있습니다.

+------+--------+-------+
| Year | Col    | Value |
+------+--------+-------+
| 2020 | Col1   | 100   |
| 2020 | Col2   | 200   |
| 2020 | Col3   | 300   |
| 2020 | Col4   | 400   |
| 2021 | Col1   | 150   |
| 2021 | Col2   | 250   |
| 2021 | Col3   | 350   |
| 2021 | Col4   | 450   |
+------+--------+-------+

이제 연도와 열 값을 비교하여 원하는 분석 작업을 수행할 수 있습니다. 예를 들어, 연도 별로 Col1과 Col2의 값을 비교하여 증감을 구할 수 있습니다.

예시 2: 데이터 집계 및 요약

또 다른 예시로, 다음과 같은 테이블이 있다고 가정해봅시다.

+------+--------+------+------+------+
| Year | Type1  | Type2| Type3| Type4|
+------+--------+------+------+------+
| 2020 | 10     | 20   | 30   | 40   |
| 2021 | 15     | 25   | 35   | 45   |
+------+--------+------+------+------+

위의 테이블에서는 각 연도별로 Type1, Type2, Type3, Type4의 값이 기록되어 있습니다. UNPIVOT을 사용하여 값들을 집계하거나 요약할 수 있습니다.

SELECT column_name, SUM(value) AS total
FROM table_name
UNPIVOT (
  value
  FOR column_name IN (Type1, Type2, Type3, Type4)
)
GROUP BY column_name ;

위의 구문을 실행하면 다음과 같은 결과를 얻을 수 있습니다.

+------------+-------+
| column_name | total |
+------------+-------+
| Type1      | 25    |
| Type2      | 45    |
| Type3      | 65    |
| Type4      | 85    |
+------------+-------+

위의 예시에서는 Type1, Type2, Type3, Type4의 값을 합산하여 총합을 구하는 예시입니다. UNPIVOT을 사용하여 데이터를 집계하거나 요약할 수 있으므로, 다양한 분석 작업에서 유용하게 활용될 수 있습니다.

위의 예시들은 UNPIVOT의 활용 예시로 일부분에 불과합니다. UNPIVOT을 사용하여 데이터를 유연하게 변환하고 다양한 분석 작업에 적용할 수 있다는 것을 염두에 두고 활용해 보시기 바랍니다.