今日仕事で、DBからデータを検索しなくちゃいけなかったん
だけど、複数のカラムのうち最大の値を取得するのを1本のSQL
で簡単に出来ないかな?って考えた。
簡単な例でいくと、カラム col_a, col_b, col_c とある
tableがあって
col_a col_b col_c
----- ------ ------
4 2 1
1 5 0
1 1 0
だとする。
これを1本のSQLで、各Row毎のcol_a, col_b, col_c の
最大値をとりたい。
期待する結果はこんな感じ。
4
5
1
Excelだと =max(a1,b1,c1) みたいに簡単。
私はSybaseを使っているので、
select
case when col_a >= col_b then
case when col_c >= col_a then col_c
else col_a
end
else case when col_c >= col_b then col_c
else col_b
end
end
from table_x
こうなるのかな?
ここで検査するカラムの数が3個ならいいけど、10個だとキツイ。
Stored Procedureかなんか作って、Loopでまわすしかないのかな?
結局、Excelにデータを落して Excelの関数でやりましたけど‥