1

MS Access を使用しています。

列 A が null の場合は列 B を使用する IIF 式を作成したいと考えています。列 B が空白の場合は、列 C を使用します。

私はこれまでこれを手に入れましたが、うまくいかないようです

IIf(IsNull([DataTable]![State1]),[DataTable]![State2],
IIf(IsNull([DataTable]![State2]),[DataTable]![State3],
IIf(IsNull([DataTable]![State3]),[DataTable]![State4])))

私は Access の上級ユーザーではなく、なぜこれがうまくいかないのかわかりません。

4

1 に答える 1

1

Switch 関数を使用して、必要なロジックを表現できます。

これは、以下のクエリからの出力です。最初の 5 列はDataTableに含まれ、最後の列はSwitch式によって生成されます。

id State1 State2 State3 State4 computed_column
-- ------ ------ ------ ------ ---------------
 1                           a               a
 2                    b                      b
 3             c                             c
 4      d                                    d
 5                                    all Null

SELECT
    d.id,
    d.State1,
    d.State2,
    d.State3,
    d.State4,
    Switch(
        d.State1 Is Not Null, d.State1,
        d.State2 Is Not Null, d.State2,
        d.State3 Is Not Null, d.State3,
        d.State4 Is Not Null, d.State4,
        True, 'all Null'
    ) AS computed_column
FROM DataTable AS d;

または、Access セッション内からクエリを実行する場合は、ネストされたNz Functionsを使用できます。このクエリは、上記と同じ結果を生成します。

SELECT
    d.id,
    d.State1,
    d.State2,
    d.State3,
    d.State4,
    Nz(d.State1,
        Nz(d.State2,
        Nz(d.State3,
        Nz(d.State4,
        'all Null')))
    ) AS computed_column
FROM DataTable AS d;
于 2015-02-18T02:46:41.277 に答える