とまと あんらいぷ…

エンジニアの活動記録とかつぶやきとか

GitHub
スポンサードリンク

SQLServer2005で Oracle のGreatest 関数実装

特に対した事はないけど
同一行内で最大値をとりたい時、

Oracleなら Greatest( Value1, Value2) ってやるだけでいいらしい。
SQLServerってそういうの無いの?

例えば次ぎのようなTESTテーブルがあったとして、
ID | Value1 | Value2 | Value3
1 | 1 | 2 | 3
2 | 2 | 5 | 6
3 | 4 | 1 | 2

結果
Greaetest
3
6
4

みたいな結果を出したい。
Value1と2だけ比べるならこんな感じなんだけど3項目ってなるとちょっと入れ子Caseの書き方がこんがらがったのでメモ書き(笑)

-------2項目比較--------
select id
, case when Value1 < Value2 then Value2
else Value1
end as moreThen
from [Test].[dbo].[Greatest]
 
-------3項目比較--------
SELECT
id,
case when
case when [value1] < [value2] then [value2]
else [value1]
end < [value3] then [value3]
else
case when [value1] < [value2] then [value2]
else [value1]
end
end as Greatest
FROM Sample

結果
1 3
2 6
3 4


成功ってことで^^A

ちなみに参考サイト。
Case式のススメ
殆ど記事の写しみたいになってしまったけど、
インデントのやり方をより自分で理解しやすいように書き直しただけっていう・・・・

DBエンジニアの方が直々に執筆してるサイトで非常に分かりやすい。
DB初心者の私にしてみたらぐっとくる事がいっぱい書いてる。
オヌヌヌ!
▼この記事を読んだ方は、こんな記事も読んでいます。▼

スポンサードリンク

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://dalmore.blog7.fc2.com/tb.php/18-52e979a5
この記事にトラックバックする(FC2ブログユーザー)

FC2Ad