2

私は SQL を初めて使用し、Access 2013 を使用しています。列の値を見て、列の各レコードにカテゴリ番号を割り当てる CASE ステートメントを作成しようとしています。コードを実行しようとすると、「演算子がありません」というメッセージが表示され続けます。以下にコードをリストしました。助けていただければ幸いです。ありがとう

SELECT P.REGISTRATION_NUMBER, P.DATA_INDICATOR, D.TERRITORY_ID, P.PRODUCT_NAME, P.JAN_13_TRX, P.DEC_12_TRX, P.NOV_12_TRX, P.OCT_12_TRX, P.SEPT_12_TRX, P.AUG_12_TRX, P.JULY_12_TRX, P.JUNE_12_TRX, P.MAY_12_TRX, P.APR_12_TRX, P.MAR_12_TRX, P.FEB_12_TRX, (P.JAN_13_TRX+P.DEC_12_TRX+P.NOV_12_TRX+P.OCT_12_TRX+P.SEPT_12_TRX+P.AUG_12_TRX+P.JULY_12_TRX+P.JUNE_12_TRX+P.MAY_12_TRX+P.APR_12_TRX+P.MAR_12_TRX+P.FEB_12_TRX) AS ROLLING_12 INTO ESTROGEL_WITH_ROLLING_12
FROM Ascend_presc_data AS P INNER JOIN Ascend_demo AS D ON P.REGISTRATION_NUMBER = D.REGISTRATION_NUMBER
WHERE (((P.DATA_INDICATOR)=1) AND ((P.PRODUCT_NAME)='ESTROGEL'))
(CASE 
WHEN P.ROLLING_12 > 199 THEN 10
WHEN P.ROLLING_12 > 99 THEN 9
WHEN P.ROLLING_12 > 49 THEN 8
WHEN P.ROLLING_12 > 19 THEN 7
WHEN P.ROLLING_12 > 9 THEN 6
WHEN P.ROLLING_12 > 4 THEN 5
WHEN P.ROLLING_12 = 4 THEN 4
WHEN P.ROLLING_12 = 3 THEN 3
WHEN P.ROLLING_12 = 2 THEN 2
WHEN P.ROLLING_12 = 1 THEN 1
ELSE 0
END) AS CATEGORY;
4

2 に答える 2

6

CASE は MS Access では使用できません。Switch、IIF またはより良いものを見てください。これは、結合または比較できる一致する値のルックアップ テーブルです。

スイッチ: http://www.techonthenet.com/access/functions/advanced/switch.php

于 2013-03-28T17:07:56.443 に答える
3
   SELECT 
      P.REGISTRATION_NUMBER, 
      ...
   FROM 
      Ascend_presc_data AS P 
      ...
   WHERE (((P.DATA_INDICATOR)=1) AND ((P.PRODUCT_NAME)='ESTROGEL'))
      AND <<MISSING STATEMENT>> =
        (SWITCH
        P.ROLLING_12 > 199,10
        P.ROLLING_12 > 99, 9
        P.ROLLING_12 > 49, 8
        P.ROLLING_12 > 19, 7
        P.ROLLING_12 > 9, 6
        P.ROLLING_12 > 4, 5
        P.ROLLING_12 = 4, 4
        P.ROLLING_12 = 3, 3
        P.ROLLING_12 = 2, 2
        P.ROLLING_12 = 1, 1
        END));
于 2013-03-28T17:09:59.130 に答える