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에서 열을 행으로 변환할 수 있습니다.
각각의 방법은 다른 상황에 맞게 선택하여 사용하시면 됩니다.
'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 |