2017-04-07 41 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'