-1

我不确定是什么导致了错误。任何帮助,将不胜感激

SELECT ( SUM(DWXP050.Premp) )
FROM   DWXP050
       LEFT JOIN [DWXP050 GL Class]
         ON [DWXP050 GL Class].Policy = DWXP050.Policy
            AND [DWXP050 GL Class].CDDESC = DWXP050.CDDESC
            AND [DWXP050 GL Class].TRDATE = DWXP050.TRDATE
            AND [DWXP050 GL Class].[Effective Date] = DWXP050.EFFDTE
            AND [DWXP050 GL Class].ASLOB = DWXP050.ASLOB
            AND [DWXP050 GL Class].AGENT = DWXP050.AGENT
WHERE  (( ( DWXP050.TRANS ) = '10'
           OR ( DWXP050.TRANS ) = '20' ))
GROUP  BY ( SUM(DWXP050.Premp) )
HAVING ( ( ( [DWXP050 GL Class].AGENT ) = '00000BP001' )
         AND ( ( [DWXP050 GL Class].[Effective Date] ) >= '20130201'
               AND ( [DWXP050 GL Class].[Effective Date] ) <= '20130228' )
         AND ( ( [DWXP050 GL Class].ASLOB ) = '170'
                OR ( [DWXP050 GL Class].ASLOB ) = '180' )
         AND ( ( [DWXP050 GL Class].[Product] ) <> 'CUP' )
         AND ( ( [DWXP050 GL Class].CDDESC ) = 'PEST CONTROL SERVICES' )
         AND ( ( [DWXP050 GL Class].TRDATE ) <= '20130401' ) ) 
4

2 回答 2

0

您的 GROUP BY 子句中有一个聚合函数,而 HAVING 子句中有一个非聚合过滤器。由于您在同一列上求和,因此您似乎不想分组,只需将该组取出并将 HAVING 语句移动到您的 WHERE 子句:

SELECT SUM(DWXP050.Premp)
FROM   DWXP050
       LEFT JOIN [DWXP050 GL Class]
         ON [DWXP050 GL Class].Policy = DWXP050.Policy
            AND [DWXP050 GL Class].CDDESC = DWXP050.CDDESC
            AND [DWXP050 GL Class].TRDATE = DWXP050.TRDATE
            AND [DWXP050 GL Class].[Effective Date] = DWXP050.EFFDTE
            AND [DWXP050 GL Class].ASLOB = DWXP050.ASLOB
            AND [DWXP050 GL Class].AGENT = DWXP050.AGENT
WHERE  
    ( DWXP050.TRANS  = '10'
           OR  DWXP050.TRANS  = '20' )
    AND [DWXP050 GL Class].AGENT  = '00000BP001' 
    AND [DWXP050 GL Class].[Effective Date] >= '20130201'
    AND [DWXP050 GL Class].[Effective Date] <= '20130228'
    AND ([DWXP050 GL Class].ASLOB  = '170'
        OR [DWXP050 GL Class].ASLOB = '180' )
    AND [DWXP050 GL Class].[Product] ) <> 'CUP'
    AND [DWXP050 GL Class].CDDESC = 'PEST CONTROL SERVICES'
    AND [DWXP050 GL Class].TRDATE <= '20130401' 
于 2013-06-25T19:25:01.020 回答
0

您正在使用 HAVING 子句,就像 WHERE 子句一样。也就是说,您正在尝试强制执行不在聚合或 GROUP BY 表达式上的数据约束。将它们移到您的 WHERE 子句中。

SELECT ( SUM(DWXP050.Premp) )
FROM   DWXP050
       LEFT JOIN [DWXP050 GL Class]
         ON [DWXP050 GL Class].Policy = DWXP050.Policy
            AND [DWXP050 GL Class].CDDESC = DWXP050.CDDESC
            AND [DWXP050 GL Class].TRDATE = DWXP050.TRDATE
            AND [DWXP050 GL Class].[Effective Date] = DWXP050.EFFDTE
            AND [DWXP050 GL Class].ASLOB = DWXP050.ASLOB
            AND [DWXP050 GL Class].AGENT = DWXP050.AGENT
WHERE  (( ( DWXP050.TRANS ) = '10'
           OR ( DWXP050.TRANS ) = '20' ))
AND ( ( ( [DWXP050 GL Class].AGENT ) = '00000BP001' )
         AND ( ( [DWXP050 GL Class].[Effective Date] ) >= '20130201'
               AND ( [DWXP050 GL Class].[Effective Date] ) <= '20130228' )
         AND ( ( [DWXP050 GL Class].ASLOB ) = '170'
                OR ( [DWXP050 GL Class].ASLOB ) = '180' )
         AND ( ( [DWXP050 GL Class].[Product] ) <> 'CUP' )
         AND ( ( [DWXP050 GL Class].CDDESC ) = 'PEST CONTROL SERVICES' )
         AND ( ( [DWXP050 GL Class].TRDATE ) <= '20130401' ) ) 
于 2013-06-25T19:20:52.853 回答