やりたいこと
各レコードでカラム同士を比較して最小値・最大値を計算したい。
MIN関数やMAX関数のようにレコード同士の比較ではなく、同一レコード内でカラム同士の比較をしたい。
2つのカラムの比較であればCASE文で対処できるが、3つ以上のカラムの比較をラクに行いたい。
結論
WITH
test_table AS (
/*
テスト用テーブルの作成
*/
SELECT 1 AS column_a, 2 AS column_b, 3 AS column_c
UNION ALL
SELECT 4 AS column_a, 6 AS column_b, 5 AS column_c
UNION ALL
SELECT 9 AS column_a, 7 AS column_b, 8 AS column_c
)
SELECT
column_a
,column_b
,column_c
,LEAST(column_a, column_b, column_c) AS min_value
,GREATEST(column_a, column_b, column_c) AS max_value
FROM
test_table