T-SQL と SQL Server で 2 つの値の最小値を取得する方法
T-SQL と SQL Server で 2 つの値の最小値を取得する方法
MIN 関数は、指定された列または式の最小値を取得する最も基本的な方法です。
例:
SELECT MIN(value1, value2)
FROM table;
この例では、table
テーブルの value1
と value2
列の最小値を取得します。
利点:
- シンプルで分かりやすい
- どのデータベースでも使用できる
- NULL 値があると、結果が NULL になる
CASE 式は、条件に基づいて異なる値を返す式です。
SELECT
CASE WHEN value1 < value2 THEN value1
ELSE value2
END AS min_value
FROM table;
この例では、value1
が value2
より小さい場合 value1
を、そうでなければ value2
を min_value
という名前で返します。
- NULL 値の影響を受けない
- より複雑な条件を設定できる
- MIN 関数より記述量が多くなる
LEAST 関数は、2 つの値の最小値を取得する関数です。
SELECT LEAST(value1, value2)
FROM table;
- SQL Server 2012 以降でのみ使用できる
SELECT GREATEST(value1, value2) * -1
FROM table;
2 つの値の最小値を取得するには、いくつかの方法があります。 それぞれの方法の利点と欠点を理解した上で、状況に合わせて最適な方法を選択してください。
-- テーブル作成
CREATE TABLE test (
value1 INT,
value2 INT
);
-- データ挿入
INSERT INTO test (value1, value2) VALUES (10, 20);
INSERT INTO test (value1, value2) VALUES (5, 15);
INSERT INTO test (value1, value2) VALUES (NULL, 10);
-- MIN 関数
SELECT MIN(value1, value2) AS min_value
FROM test;
-- CASE 式
SELECT
CASE WHEN value1 < value2 THEN value1
ELSE value2
END AS min_value
FROM test;
-- LEAST 関数
SELECT LEAST(value1, value2) AS min_value
FROM test;
-- GREATEST 関数
SELECT GREATEST(value1, value2) * -1 AS min_value
FROM test;
このコードを実行すると、以下の結果が出力されます。
min_value
-------
5
5
5
-10
補足
- 上記のサンプルコードは、SQL Server 2017 で実行されています。
- NULL 値を含む列に対して MIN 関数を使用すると、結果が NULL になる可能性があります。
COALESCE 関数は、最初の引数が NULL の場合、2 番目の引数を返す関数です。
SELECT COALESCE(value1, value2) AS min_value
FROM table;
この例では、table
テーブルの value1
列が NULL の場合、value2
列を min_value
という名前で返します。
SELECT IIF(value1 < value2, value1, value2) AS min_value
FROM table;
数学演算子を使用して、2 つの値の最小値を取得することもできます。
SELECT value1 - ABS(value1 - value2) AS min_value
FROM table;
この例では、value1
と value2
の差の絶対値を引くことで、value1
と value2
の最小値を取得します。
- 負の値の場合、誤った結果になる可能性がある
t-sql sql-server