2つの数値列NUMとDENを持つテーブルがあるとします。 私はDENが0でない場合にのみ、比率NUM/DENを抽出する必要があります。[...]のいくつかの種類であるSQLクエリ内の数式内のIFステートメント
select ID, [...] AS RATIO
from Table
:そう比は、このような0
何かする必要がありますエクセル式IF(DEN = 0; 0; NUM/DEN)に相当する。
このようなクエリを実行する方法はありますか?
多くの感謝!
2つの数値列NUMとDENを持つテーブルがあるとします。 私はDENが0でない場合にのみ、比率NUM/DENを抽出する必要があります。[...]のいくつかの種類であるSQLクエリ内の数式内のIFステートメント
select ID, [...] AS RATIO
from Table
:そう比は、このような0
何かする必要がありますエクセル式IF(DEN = 0; 0; NUM/DEN)に相当する。
このようなクエリを実行する方法はありますか?
多くの感謝!
これは動作するはずです:SQL Server 2012のは、あなたが使用することができます
case
when DEN = 0 then 0
else NUM/DEN
end
場合:あなたが探しているものIIF
IIF (boolean_expression, true_value, false_value)
はい、caseです。あなたはw0lfが述べたように、あなたがcase
ステートメントを使用することができ、SQL Serverを使用しているか、あなたがそうのようiif
ステートメントを使用することができれば
case [variable]
when [value1] then [output1]
when [value2] then [output2]
when [value3] then [output3]
...
else [outputdefault] end
と
case when [Boolean(True/false) expression 1] then [output1]
when [Boolean(True/false) expression 2] then [output2]
when [Boolean(True/false) expression 3] then [output3]
...
else [outputdefault] end
:
select iif(age > 21, 'Allowed', 'Not Allowed') as status
from test;
それは2つのバージョンがあります例:
create table test (
fullname varchar (20),
age int
);
insert into test values
('John', 10),
('Matt', 90),
('Jane', 25),
('Ruby', 80),
('Randy', null);
結果は
| fullname | status |
|----------|-------------|
| John | Not Allowed |
| Matt | Allowed |
| Jane | Allowed |
| Ruby | Allowed |
| Randy | Not Allowed |
同じことが
select case when age > 21 then 'Allowed' else 'Not Allowed' end as status
from test;
case
文は、多くのデータベースエンジンによって使用されているように記述することができます。
あなたがnullではなくNULL値を扱っている場合は、そのよう3210を使用することができます。
select fullname, coalesce(age, 999) as status
from test;
結果を次のようになります。
| fullname | status |
|----------|--------|
| John | 10 |
| Matt | 90 |
| Jane | 25 |
| Ruby | 80 |
| Randy | 999 |
を最初にあなたは3210はないと思うかもしれif age is null then 999 else age
。 sort-ofを実行しますが、特に3210は最初のNULL以外の値をリストに出力します。だから、coalesce(null, null, 45)
は45 coalesce(null, 33, 45)
になりますSQLフィドルで遊んで気軽に33
になります:[?THEN SQL SELECTで... IFを実行する方法]のhttp://sqlfiddle.com/#!6/a41a7/6
が重複する可能性を(http://stackoverflow.com/questions/63447/how-to-perform-an-if-then-in-an-sql-select) – uTeisT
'SELECT ISNULL(NUM/NULLIF(DEN、0)、0)' SQL Serverの場合 – Fabio
あなたが実際にそれを最初に検索した場合、時間がかかりませんでした。* downvoted&flagged * – uTeisT