在Sql中连接具有多个字段的表,其中一个字段需要求和

时间:2012-07-03 19:26:29

标签: sql

我有两张桌子:

表格GL

TRANS_NBR     BASE_AMOUNT    CTRL GRP
 120211282    -7200          77
 120211282    -300           77
 120211282    -10000         76

表AP

TRANS_NBR   BASE_AMOUNT    CODE
 120211282  7500           Wire
 120211282  10000          ACH

我需要能够将代码列添加到GL表中,但需要首先聚合金额。有谁知道如何做到这一点?感谢

我从Tom Ingram的回答中尝试过这个,

SELECT GLTRANS.REFERENCE, SUM(GLTRANS.BASE_AMOUNT) AS SUM_BASE_AMOUNT, CBCHECK.CODE 
FROM (      
SELECT GLTRANS.REFERENCE, GLTRANS.BASE_AMOUNT, CBCHECK.CODE         
FROM  LAWSON_PRODST.LAWSON.GLTRANS      
LEFT JOIN LAWSON_PRODTST.LAWSON.CBCHECK on CBCHECK.TRANS_NBR = GLTRANS.REFERENCE    
UNION       
SELECT GLTRANS.REFERENCE, GLTRANS.BASE_AMOUNT, CBCHECK.CODE         
FROM LAWSON_PRODTST.LAWSON.CBCHECK      
)       
GROUP BY GLTRANS.REFERENCE      

但是我得到了“关键字附近的语法不正确”组。“有人能发现问题吗?谢谢

2 个答案:

答案 0 :(得分:0)

SELECT  TRANS_NBR,
        Base_Amount = SUM(Base_Amount),
        Code        = /*Your Logic Here */
  FROM  TABLE_GL
 GROUP BY TRANS_NBR

答案 1 :(得分:0)

尝试这样的事情

select DTABLE.TRANS_MBR, DTABLE.SUM(BASE_AMOUNT) as DTABLE.SUM_BASE_AMOUNT, CODE
from (
    select TABLE_GL.TRANS_NBR, TABLE_GL.BASE_AMOUNT, TABLE_AP.CODE
    from TABLE_GL
    left join TABLE_AP on TABLE_AP.TRANS_NBR = TABLE_GL.TRANS_NBR
    union
    select TABLE_AP.TRANS_NBR, TABLE_AP.BASE_AMOUNT, TABLE_AP.CODE
    from TABLE_AP
) as DTABLE
group by TRANS_NBR