如题:
SELECT ID, R1, R2, R3, R4, R5, R6, 
       (R1+R2) AS Achu, 
        R3 AS Bchu, 
       (R4+R5+R6) AS Cchu, 
       (R1+R2+R3+R4+R5+R6) AS Ochu, 
       (IF(MOD(R1,2)=0,1,-1)) AS BJO, 
       (IF(MOD(R2,2)=0,1,-1)) AS CJO, 
       (IF(MOD(R3,2)=0,1,-1)) AS DJO, 
       (IF(MOD(R4,2)=0,1,-1)) AS EJO, 
       (IF(MOD(R5,2)=0,1,-1)) AS FJO, 
       (IF(MOD(R6,2)=0,1,-1)) AS GJO, 
       (BJO+CJO+DJO+EJO+FJO+GJO) AS Xs, 
       MOD(R1,3) AS M1, MOD(R2,3) AS M2, 
       MOD(R3,3) AS M3, MOD(R4,3) AS M4, 
       MOD(R5,3) AS M5, MOD(R6,3) AS M6
FROM redBoxdb.dbo.Q2_1_3;
错误提示如下:

Msg 156, Level 15, State 1, Line 7
Incorrect syntax near the keyword 'IF'.
Msg 195, Level 15, State 10, Line 7
'MOD' is not a recognized built-in function name.
Msg 195, Level 15, State 10, Line 8
'MOD' is not a recognized built-in function name.
Msg 195, Level 15, State 10, Line 9
'MOD' is not a recognized built-in function name.
Msg 195, Level 15, State 10, Line 10
'MOD' is not a recognized built-in function name.
Msg 195, Level 15, State 10, Line 11
'MOD' is not a recognized built-in function name.
Msg 195, Level 15, State 10, Line 12
'MOD' is not a recognized built-in function name.

解决方案 »

  1.   

    这是EXCEL的用法吧,试试
    SELECT 
       ID, R1, R2, R3, R4, R5, R6, 
      (R1+R2) AS Achu, 
       R3 AS Bchu, 
      (R4+R5+R6) AS Cchu, 
      (R1+R2+R3+R4+R5+R6) AS Ochu,
      case when R1/2=0 then 1 else -1 end AS BJO,
      case when R2/2=0 then 1 else -1 end AS CJO, 
      case when R3/2=0 then 1 else -1 end AS DJO, 
      case when R4/2=0 then 1 else -1 end AS EJO, 
      case when R5/2=0 then 1 else -1 end AS FJO, 
      case when R6/2=0 then 1 else -1 end AS GJO, 
      (BJO+CJO+DJO+EJO+FJO+GJO) AS Xs, 
       R1/3 AS M1, R2/3 AS M2, 
       R3/3 AS M3, R4/3 AS M4, 
       R5/3 AS M5, R6/3 AS M6
    FROM 
      redBoxdb.dbo.Q2_1_3;
      

  2.   

    提示很明显,没有mod这个内置函数,需要自己写。或者这样修改SELECT ID, R1, R2, R3, R4, R5, R6, 
           (R1+R2) AS Achu, 
            R3 AS Bchu, 
           (R4+R5+R6) AS Cchu, 
           (R1+R2+R3+R4+R5+R6) AS Ochu, 
           case when R1/2=0 then 1 else -1 end AS BJO,
           case when R2/2=0 then 1 else -1 end AS CJO, 
           case when R3/2=0 then 1 else -1 end AS DJO, 
           case when R4/2=0 then 1 else -1 end AS EJO, 
           case when R5/2=0 then 1 else -1 end AS FJO, 
           case when R6/2=0 then 1 else -1 end AS GJO,
           case when R1/2=0 then 1 else -1 end + case when R2/2=0 then 1 else -1 end+case when R3/2=0 then 1 else -1 end +
    case when R4/2=0 then 1 else -1 end+case when R5/2=0 then 1 else -1 end +case when R6/2=0 then 1 else -1 end AS Xs, 
           MOD(R1,3) AS M1, MOD(R2,3) AS M2, 
           MOD(R3,3) AS M3, MOD(R4,3) AS M4, 
           MOD(R5,3) AS M5, MOD(R6,3) AS M6
    FROM redBoxdb.dbo.Q2_1_3;
      

  3.   

    SELECT ID, R1, R2, R3, R4, R5, R6, 
           (R1+R2) AS Achu, 
            R3 AS Bchu, 
           (R4+R5+R6) AS Cchu, 
           (R1+R2+R3+R4+R5+R6) AS Ochu, 
           (case when R1 % 2=0 then 1 else -1 end) AS BJO, 
           (case when R2 % 2=0 then 1 else -1 end) AS CJO, 
           (case when R3 % 2=0 then 1 else -1 end) AS DJO, 
           (case when R4 % 2=0 then 1 else -1 end) AS EJO, 
           (case when R5 % 2=0 then 1 else -1 end) AS FJO, 
           (case when R6 % 2=0 then 1 else -1 end) AS GJO, 
           (BJO+CJO+DJO+EJO+FJO+GJO) AS Xs, 
           R1 % 3 AS M1, R2 % 3 AS M2, 
           R3 % 3 AS M3, R4 % 3 AS M4, 
           R5 % 3 AS M5, R6 % 3 AS M6
    FROM redBoxdb.dbo.Q2_1_3;
      

  4.   

    SELECT ID, R1, R2, R3, R4, R5, R6, 
           (R1+R2) AS Achu, 
            R3 AS Bchu, 
           (R4+R5+R6) AS Cchu, 
           (R1+R2+R3+R4+R5+R6) AS Ochu, 
           CASE WHEN R1/2=0 THEN 1 ELSE -1 END AS BJO,
           CASE WHEN R2/2=0 THEN 1 ELSE -1 END AS CJO, 
           CASE WHEN R3/2=0 THEN 1 ELSE -1 END AS DJO, 
           CASE WHEN R4/2=0 THEN 1 ELSE -1 END AS EJO, 
           CASE WHEN R5/2=0 THEN 1 ELSE -1 END AS FJO, 
           CASE WHEN R6/2=0 THEN 1 ELSE -1 END AS GJO,
           CASE WHEN R1/2=0 THEN 1 ELSE -1 END 
      +CASE WHEN R2/2=0 THEN 1 ELSE -1 END
      +CASE WHEN R3/2=0 THEN 1 ELSE -1 END 
      +CASE WHEN R4/2=0 THEN 1 ELSE -1 END
      +CASE WHEN R5/2=0 THEN 1 ELSE -1 END 
      +CASE WHEN R6/2=0 THEN 1 ELSE -1 END AS Xs, 
           R1 % 3 AS M1, R2 % 3 AS M2, 
           R3 % 3 AS M3, R4 % 3 AS M4, 
           R5 % 3 AS M5, R6 % 3 AS M6
    FROM redBoxdb.dbo.Q2_1_3;
      

  5.   

    (BJO+CJO+DJO+EJO+FJO+GJO) AS Xs 不可用SQL Select语句完整的执行顺序: 1、from子句组装来自不同数据源的数据;
    2、where子句基于指定的条件对记录行进行筛选; 
    3、group by子句将数据划分为多个分组; 
    4、使用聚集函数进行计算;
    5、使用having子句筛选分组; 
    6、计算所有的表达式; 
    7、使用order by对结果集进行排序。
      

  6.   

    老大们,mod 应该用 % ,虽然你的语法都是对的,但只一个人用了 % 其余用的是/ ,哈哈,有意思