R1...R60为每1分钟SELECT stationNum, SUM(YL) AS t
FROM (SELECT stationNum, 
              (R1 + R2 + R3 + R4 + R5 + R6 + R7 + R8 + R9 + R10 + R11 + R12 + R13 + R14 +
               R15 + R16 + R17 + R18 + R19 + R20 + R21 + R22 + R23 + R24 + R25 + R26 + R27
               + R28 + R29 + R30 + R31 + R32 + R33 + R34 + R35 + R36 + R37 + R38 + R39 +
               R40 + R41 + R42 + R43 + R44 + R45 + R46 + R47 + R48 + R49 + R50 + R51 + R52
               + R53 + R54 + R55 + R56 + R57 + R58 + R59 + R60) AS YL
        FROM tabRain
        WHERE ObserveTime BETWEEN '2008-06-02 20:00:00' AND '2008-06-03 20:00:00') 
      allst
GROUP BY stationNum
ORDER BY SUM(YL)
将expression转换为数据类型tinyint时发生算数溢出错误。而去掉order by子句则没问题,同样第一行也使用SUM(YL)就不出问题,为什么SUM(YL)出现在order by子句就出错。

解决方案 »

  1.   

    BETWEEN #2008-06-02 20:00:00# AND #2008-06-03 20:00:00#日期型用#
      

  2.   

    各 R 列的数据类型是 tinyint 吧?
    用这个试试:
    SELECT stationNum, SUM(YL) AS t 
    FROM (SELECT stationNum, 
                  (1000 + R1 + R2 + R3 + R4 + R5 + R6 + R7 + R8 + R9 + R10 + R11 + R12 + R13 + R14 + 
                  R15 + R16 + R17 + R18 + R19 + R20 + R21 + R22 + R23 + R24 + R25 + R26 + R27 
                  + R28 + R29 + R30 + R31 + R32 + R33 + R34 + R35 + R36 + R37 + R38 + R39 + 
                  R40 + R41 + R42 + R43 + R44 + R45 + R46 + R47 + R48 + R49 + R50 + R51 + R52 
                  + R53 + R54 + R55 + R56 + R57 + R58 + R59 + R60 - 1000) AS YL 
            FROM tabRain 
            WHERE ObserveTime BETWEEN '2008-06-02 20:00:00' AND '2008-06-03 20:00:00') 
          allst 
    GROUP BY stationNum 
    ORDER BY SUM(YL)
      

  3.   

    或者:
    SELECT stationNum, SUM(YL) AS t 
    FROM (SELECT stationNum, 
                  (convert(int,R1) + R2 + R3 + R4 + R5 + R6 + R7 + R8 + R9 + R10 + R11 + R12 + R13 + R14 + 
                  R15 + R16 + R17 + R18 + R19 + R20 + R21 + R22 + R23 + R24 + R25 + R26 + R27 
                  + R28 + R29 + R30 + R31 + R32 + R33 + R34 + R35 + R36 + R37 + R38 + R39 + 
                  R40 + R41 + R42 + R43 + R44 + R45 + R46 + R47 + R48 + R49 + R50 + R51 + R52 
                  + R53 + R54 + R55 + R56 + R57 + R58 + R59 + R60) AS YL 
            FROM tabRain 
            WHERE ObserveTime BETWEEN '2008-06-02 20:00:00' AND '2008-06-03 20:00:00') 
          allst 
    GROUP BY stationNum 
    ORDER BY SUM(YL)
      

  4.   

    问题是,只要去掉Order By SUM(YL)就不出问题,而sum(YL)在select子句中统计不出问题。