반응형
Ant_U
DBA 개미
Ant_U
전체 방문자
오늘
어제
  • 분류 전체보기 (262)
    • AWS (3)
    • C# (1)
    • SQL (236)
      • MYSQL (186)
      • MSSQL (50)
    • 자격증 (20)
      • SQLD (12)
      • SQLP (8)

인기 글

최근 글

250x250
hELLO · Designed By 정상우.
Ant_U

DBA 개미

SQL/MSSQL

[MSSQL] 열을 행으로 바꾸는 방법 / UNPIVOT, CROSS APLLY

2023. 7. 21. 12:04
728x90
반응형

MSSQL에서 열을 행으로 변환하는 방법은 일반적으로 `UNPIVOT` 또는 `CROSS APPLY`를 사용하여 수행할 수 있습니다. 

두 가지 방법에 대해 예시를 포함하여 자세하게 설명하겠습니다.

1. UNPIVOT 사용하기:

`UNPIVOT`은 열을 행으로 변환하는 데 사용되는 표준 T-SQL 연산자입니다. 

`UNPIVOT`은 열 이름을 값으로 변환하고, 해당 값과 연결된 식별자 열을 추가하는 작업을 수행합니다. 

예시를 통해 설명하겠습니다.

**예시:**

고객 정보를 담은 테이블 `Customers`가 다음과 같이 있다고 가정합니다.

| CustomerID | FirstName | LastName | Age |
|------------|-----------|----------|-----|
| 1          | John      | Smith    | 30  |
| 2          | Jane      | Doe      | 25  |



이 테이블의 `FirstName`, `LastName`, `Age` 열을 행으로 변환하고자 합니다.

-- UNPIVOT을 사용하여 열을 행으로 변환
SELECT CustomerID, Attribute, Value
FROM Customers
UNPIVOT (
    Value FOR Attribute IN (FirstName, LastName, Age)
) AS UnpivotedCustomers;

위의 쿼리는 다음과 같은 결과를 반환합니다.

| CustomerID | Attribute | Value |
|------------|-------------|-------|
| 1          | FirstName   | John  |
| 1          | LastName    | Smith |
| 1          | Age         | 30    |
| 2          | FirstName   | Jane  |
| 2          | LastName    | Doe   |
| 2          | Age         | 25    |

이렇게 `UNPIVOT`을 사용하여 `FirstName`, `LastName`, `Age` 열을 행으로 변환했습니다.

2. CROSS APPLY 사용하기:

`CROSS APPLY`는 `JOIN`과 비슷하게 동작하지만, 함수를 통해 결과를 반환하는 데 사용됩니다. 

열을 행으로 변환하는 데에도 유용하게 사용할 수 있습니다. 예시를 통해 설명하겠습니다.

**예시:**

주문 정보를 담은 테이블 `Orders`가 다음과 같이 있다고 가정합니다.

| OrderID | Product1 | Product2 | Product3 |
|---------|-----------|-----------|-----------|
| 1       | Apple     | Banana    | Orange    |
| 2       | Chair     | Table     | Lamp      |

이 테이블의 `Product1`, `Product2`, `Product3` 열을 행으로 변환하고자 합니다.

-- CROSS APPLY를 사용하여 열을 행으로 변환
SELECT OrderID, Product
FROM Orders
CROSS APPLY (VALUES (Product1), (Product2), (Product3)) AS ProductTable(Product);

위의 쿼리는 다음과 같은 결과를 반환합니다.

| OrderID | Product |
|---------|----------|
| 1       | Apple    |
| 1       | Banana   |
| 1       | Orange   |
| 2       | Chair    |
| 2       | Table    |
| 2       | Lamp     |

 

이렇게 `CROSS APPLY`를 사용하여 `Product1`, `Product2`, `Product3` 열을 행으로 변환했습니다.

이렇게 `UNPIVOT`과 `CROSS APPLY`를 사용하여 MSSQL에서 열을 행으로 변환할 수 있습니다. 

각각의 방법은 다른 상황에 맞게 선택하여 사용하시면 됩니다.

728x90
반응형

'SQL > MSSQL' 카테고리의 다른 글

[MSSQL] @@LANGUAGE 사용 방법 및 예시  (0) 2023.07.26
[MSSQL] @@LANGID 사용 방법 및 예시  (0) 2023.07.26
[MSSQL] @@DBTS 사용 방법 및 예시  (0) 2023.07.26
[MSSQL] @@DATEFIRST 사용 방법 및 예시  (0) 2023.07.26
[MSSQL] 행 합치는 법(STRING_AGG, FOR XML PATH, STUFF)  (0) 2023.07.13
[MSSQL] FOR XML 사용 방법  (0) 2023.07.13
[MSSQL] @@ROWCOUNT 사용 방법 및 예시  (0) 2023.07.06
[MSSQL] STRING_SPLIT 문자열 분리 사용 방법  (1) 2023.05.24
    'SQL/MSSQL' 카테고리의 다른 글
    • [MSSQL] @@DBTS 사용 방법 및 예시
    • [MSSQL] @@DATEFIRST 사용 방법 및 예시
    • [MSSQL] 행 합치는 법(STRING_AGG, FOR XML PATH, STUFF)
    • [MSSQL] FOR XML 사용 방법
    Ant_U
    Ant_U

    티스토리툴바