ODBCはMS Accessの_CASE WHEN
_句をサポートしますか?_CASE WHEN
_句をサポートしない他のデータベースはありますか?MS Accessへの接続中に次のクエリを試しましたODBCただし例外が発生します。
SELECT (CASE WHEN (AGE > 10) THEN 1 ELSE 0 END) FROM demo
[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression '(CASE WHEN (AGE > 10) THEN 1 ELSE 0 END)'
私は、ODBCに接続しながら、比較式を使用して新しい「ブール列」を生成(計算)するために、ほとんどのデータベースで機能する一般的な方法を見つけようとしています。実際、MS AccessはSELECT句の比較をサポートしていますが、他のデータベースではCASE句が必要です。 MS Accessの場合、SQLは
_SELECT AGE > 10 FROM demo
_
しかし、他の人にはそれがなければなりません
SELECT (CASE WHEN (AGE > 10) THEN 1 ELSE 0 END) FROM demo
次の例のようにIIF
ステートメントを使用できます。
SELECT
IIF(test_expression, value_if_true, value_if_false) AS FIELD_NAME
FROM
TABLE_NAME
Accessを使用してクエリを作成しているため、AccessのバージョンのSQLに固執する必要があります。
いくつかの異なる戻り値から選択するには、switch()関数を使用します。例を少し翻訳して拡張するには:
select switch(
age > 40, 4,
age > 25, 3,
age > 20, 2,
age > 10, 1,
true, 0
) from demo
「true」の場合がデフォルトです。それがなく、他のどのケースも一致しない場合、関数はnullを返します。
Office Webサイト にはこれに関するドキュメントがありますが、構文例はVBAであり、これも間違っています。私は彼らにこれについてフィードバックをしましたが、上記の例に従えば大丈夫です。
ACCESS SQLで同様の結果を作成するには、複数のIIFステートメントを使用する必要がありました。
IIf([refi type] Like "FHA ST*","F",IIf([refi type]="VA IRRL","V"))
残りはすべてヌルのままです。