Heim > Datenbank > MySQL-Tutorial > Wie kann der Mindestwert über mehrere Spalten hinweg in SQL Server effizient ermittelt werden?

Wie kann der Mindestwert über mehrere Spalten hinweg in SQL Server effizient ermittelt werden?

Susan Sarandon
Freigeben: 2025-01-10 09:07:12
Original
1026 Leute haben es durchsucht

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

SQL Server: Effizientes Ermitteln des Mindestwerts über mehrere Spalten hinweg

Das Finden des Mindestwerts über mehrere Spalten in einer SQL Server-Tabelle ist eine häufige Aufgabe der Datenanalyse. Dieser Artikel stellt effiziente Methoden vor, um dies zu erreichen, und konzentriert sich dabei auf SQL Server 2005 und höher.

Nehmen wir eine Tabelle mit den Spalten „Col1“, „Col2“ und „Col3“ an. Unser Ziel ist es, eine neue Spalte „TheMin“ zu erstellen, die den Mindestwert aus diesen drei Spalten für jede Zeile enthält.

Methode 1: CASE-Ausdrücke verwenden

Ein einfacher Ansatz verwendet einen CASE-Ausdruck, um die Spaltenwerte zu vergleichen und das Minimum zuzuweisen. Dies ist für eine kleine Anzahl von Spalten effizient:

<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>
Nach dem Login kopieren

Diese CASE-Anweisung vergleicht die Werte und wählt den kleinsten aus.

Methode 2: UNPIVOT für mehrere Spalten verwenden

Beim Umgang mit vielen Spalten bietet der UNPIVOT-Operator eine skalierbarere Lösung. UNPIVOT wandelt mehrere Spalten in eine einzige Spalte um und ermöglicht so eine einfache Aggregation:

<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>
Nach dem Login kopieren

UNPIVOT formt die Daten um, dann findet MIN() das Minimum innerhalb jeder ID-Gruppe. Das Ergebnis wird wieder mit der Originaltabelle verknüpft. Diese Methode ist mit einer größeren Anzahl von Spalten wartbarer und effizienter als verschachtelte CASE-Anweisungen.

Das obige ist der detaillierte Inhalt vonWie kann der Mindestwert über mehrere Spalten hinweg in SQL Server effizient ermittelt werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage