1

私は主に SQL Server を使用しており、Access はほとんど使用していません。AccessでネストされたIIFステートメントに変換する必要があるSQLサーバーのケースステートメントがあり、それを機能させるのに苦労しています。SQL コードは次のとおりです。

(CASE 
    WHEN (RRDD = '2029' 
        THEN 'IS' 
    WHEN RRDD = '2214' OR '2219' OR '2220' OR '2221' OR '2230' OR '2265'
        THEN 'AIR' 
    WHEN RRDD = '2044' OR '2323' OR '2327' OR '2331' OR '2339' 
        THEN 'LogDist' 
    WHEN RRDD = '2037' 
        THEN 'MailInn' 
    WHEN RRDD = '2213' OR '2307' OR '2311' OR '2332' OR '2334' OR '2338' 
             OR '2705' OR '2706'
        THEN 'GFF' 
    WHEN RRDD = '2010' 
        THEN 'Corp' 
    WHEN RRDD = '2040' OR '2041' OR '2081' OR '2086' 
        THEN 'Cap' 
      ELSE NULL 
END) AS RegDIs
4

3 に答える 3

3

複数表現Switchの代替として検討してください。IIf

Switch
    (
        RRDD = '2029', 'IS',
        RRDD IN ('2214','2219','2220','2221','2230','2265'), 'AIR',
        RRDD IN ('2044','2323','2327','2331','2339'), 'LogDist',
        RRDD = '2037', 'MailInn',
        RRDD IN ('2213','2307','2311','2332','2334','2338','2705','2706'), 'GFF',
        RRDD = '2010', 'Corp',
        RRDD IN ('2040','2041','2081','2086'), 'Cap'
    ) AS RegDIs

ではSwitch、どの条件にも一致しない場合、関数は Null を返します。

特に、これに必要な Switch数が多い場合は理解しやすいと思います。IIfs

それでも、SwitchまたはIIfアプローチのいずれかは、SQL ステートメントにデータを書き込むことになります。他の人が言ったように、ルックアップテーブルの方が良いアプローチだと思います。

RRDD RegDIs
2029 IS
2214 AIR
2219 AIR
2220 AIR

複雑なクエリを修正する代わりに、必要に応じてテーブルを編集する方が簡単です。

于 2013-04-30T20:39:57.897 に答える