select max(val,0)
from table
私はテーブル全体の最大値を探しているわけではありません。
このより簡単な方法が必要ですか?
select case when val > 0 then val else 0 end
from table
編集:Microsoft SQL Server
を使用しています。select max(val,0)
from table
私はテーブル全体の最大値を探しているわけではありません。
このより簡単な方法が必要ですか?
select case when val > 0 then val else 0 end
from table
編集:Microsoft SQL Server
を使用しています。機能GREATEST
とLEAST
を使用していますSQL標準ではありませんが、多くのRDBMS(例えば、Postgresqlの)です。だから、
SELECT GREATEST(val, 0) FROM mytable;
ありがとう、upvoted。私はMicrosoft SQL Serverを実行しています。だから、それらは存在しないように見える:(。 – Colin
ありません。しかし、多くのデータベースエンジンは、SQL文で使用できる一連の関数を定義しています。残念ながら、彼らは一般的に異なる名前と議論のリストを使用します。
MySQLでは、この関数はGREATESTです。 SQLiteではMAXです(1つのパラメータ以上では動作しません)。
あなたがSQLに持っているものは、有効なSQLでさえありません。これはMAXでのSQLの動作ではありません。 T-SQLでは、MAXは最大値を返す範囲で集計されます。あなたが望むのは、単に2つの価値があるということです。
詳細はこれを読む:それJOINのベースセットしてください
Is there a Max function in SQL Server that takes two values like Math.Max in .NET?
?
SELECT
max(val)
FROM
(
select val
from table
UNION ALL
select 0
) foo
これは、SQLのより良い
何の実装に合わせて他の質問で提案されているスカラーUDFを回避しますか? – JNK
Fortranでは、MAX(a、b、...)が必要なことをしました。 SQLでは、一部の方言は 'LARGER'や' SMALLER'や 'LARGEST'や' SMALLEST'などの関数をサポートしています。 AFAIKタスクの標準機能はありません。 –
恐ろしいNULLに注意してください。 'val is 0 THEN val ELSE 0 END'(0がヌルでないことが分かっている場合)または 'val1がNULLの場合はval2 val2がNULLの場合THEN 'MAX(val1、val2)'の場合val1> val2 THEN val1 ELSE val2 END'となります。 –