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 回答