>데이터 베이스 >MySQL 튜토리얼 >SQL Server의 여러 열에서 최소값을 효율적으로 찾는 방법은 무엇입니까?

SQL Server의 여러 열에서 최소값을 효율적으로 찾는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2025-01-10 09:07:121023검색

How to Efficiently Find the Minimum Value Across Multiple Columns in SQL Server?

SQL Server: 여러 열에서 효율적으로 최소값 찾기

SQL Server 테이블의 여러 열에서 최소값을 찾는 것은 일반적인 데이터 분석 작업입니다. 이 문서에서는 SQL Server 2005 이상을 중심으로 이를 달성하기 위한 효율적인 방법을 제시합니다.

'Col1', 'Col2', 'Col3' 열이 있는 테이블을 가정해 보겠습니다. 우리의 목표는 각 행에 대해 이 세 열의 최소값을 포함하는 'TheMin'이라는 새 열을 만드는 것입니다.

방법 1: CASE 표현식 사용

간단한 접근 방식에서는 CASE 표현식을 사용하여 열 값을 비교하고 최소값을 할당합니다. 이는 소수의 열에 효율적입니다.

<code class="language-sql">SELECT Id,
       CASE 
           WHEN Col1 < Col2 AND Col1 < Col3 THEN Col1
           WHEN Col2 < Col1 AND Col2 < Col3 THEN Col2
           ELSE Col3
       END AS TheMin
FROM YourTableNameHere;</code>

이 CASE 문은 값을 비교하여 가장 작은 것을 선택합니다.

방법 2: 여러 열에 UNPIVOT 사용

많은 열을 처리할 때 UNPIVOT 연산자는 더 확장 가능한 솔루션을 제공합니다. UNPIVOT은 여러 열을 단일 열로 변환하여 쉽게 집계할 수 있도록 합니다.

<code class="language-sql">WITH cte (ID, Col1, Col2, Col3) AS (
    SELECT ID, Col1, Col2, Col3
    FROM TestTable
)
SELECT cte.ID, Col1, Col2, Col3, TheMin
FROM cte
JOIN (
    SELECT
        ID, MIN(Amount) AS TheMin
    FROM cte
    UNPIVOT (Amount FOR AmountCol IN (Col1, Col2, Col3)) AS unpvt
    GROUP BY ID
) AS minValues ON cte.ID = minValues.ID;</code>

UNPIVOT은 데이터의 형태를 변경한 다음 MIN()이 각 ID 그룹 내에서 최소값을 찾습니다. 결과는 원래 테이블에 다시 조인됩니다. 이 방법은 중첩된 CASE 문보다 더 많은 수의 열을 사용하여 유지 관리가 더 쉽고 효율적입니다.

위 내용은 SQL Server의 여러 열에서 최소값을 효율적으로 찾는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.