2017-04-07 67 views
1

我遇到了SQL Server代码问题。我试图让结果按select语句的前4列列出。我不断收到语法错误,并不确定原因。在sql代码中总和的语法错误

我想要做的是拉我entityid,acctnum,我定义的时期,但是,我不希望看到结果中的时期,因为我希望他们被汇总在一起。 IE我希望看到活动列的总活动,而不是每个周期的行。

SELECT 
    ENTITYID, ACCTNUM, ACCTNAME, ACTIVITY 
FROM 
    (SELECT 
     g.ENTITYID AS 'ENTITYID' 
     g.ACCTNUM AS 'ACCTNUM' 
     SUM(g.ACTIVITY) AS 'ACTIVITY' 
     h.ACCTNAME AS 'ACCTNAME' 
    FROM 
     SQLDATA.DBO.GLSUM g 
    INNER JOIN 
     SQLDATA.DBO.GACC h ON g.ACCTNUM = h.ACCTNUM 
    WHERE 
     g.ENTITYID = '85000' 
     g.PERIOD < '201703' 
     g.ACCTNUM = '569300000') 
+2

你要与我们分享的错误讯息?你错过了一个闭幕)在某个地方。 – OldProgrammer

+0

SQL语句中存在错误,'g'附近的语法错误 – SQLISHARD

+0

看起来您缺少一个闭括号。 –

回答

2

你需要一个GROUP BY子句https://docs.microsoft.com/en-us/sql/t-sql/queries/select-group-by-transact-sql,区别在哪里元素和外部选择似乎有点多余逗号SELECT列表和关键字。

SELECT 
    g.ENTITYID AS 'ENTITYID', 
    g.ACCTNUM AS 'ACCTNUM', 
    SUM(g.ACTIVITY) AS 'ACTIVITY', 
    h.ACCTNAME AS 'ACCTNAME' 
FROM 
    SQLDATA.DBO.GLSUM g 
INNER JOIN 
    SQLDATA.DBO.GACC h ON g.ACCTNUM = h.ACCTNUM 
WHERE 
    g.ENTITYID = '85000' 
    AND g.PERIOD < '201703' 
    AND g.ACCTNUM = '569300000' 
GROUP BY 
    g.ENTITYID, 
    g.ACCTNUM, 
    h.ACCTNAME 
+0

我仍然可以得到相同的结果“SQL语句中有错误,'g'附近的语法错误。” – SQLISHARD

+0

缺少逗号选择清单 - 更新回答。 –

+0

感谢您的帮助。 – SQLISHARD

0
DECLARE @a int 
SET @a = select sum(g.ACTIVITY) 
     from SQLDATA.DBO.GLSUM 
     WHERE ENTITYID = '85000' and 
       PERIOD < '201703' and 
       ACCTNUM = '569300000' 



SELECT 

      g.ENTITYID AS 'ENTITYID' 
      g.ACCTNUM AS 'ACCTNUM' 
      @a AS 'ACTIVITY' 
      h.ACCTNAME AS 'ACCTNAME' 

FROM SQLDATA.DBO.GLSUM g 
INNER JOIN SQLDATA.DBO.GACC h 
ON g.ACCTNUM = h.ACCTNUM 

WHERE 

      g.ENTITYID = '85000' 
      g.PERIOD < '201703' 
      g.ACCTNUM = '569300000'