2017-04-20 72 views
0

我已經試過所有我能得到的Current列加起來。 '高爐','當前'和'未來'應該都等於零,我只需要一個快速檢查來驗證它。SQL Server:總結一列

代碼

SELECT 
    [AccountCode], [ExpensesCode], [CostCentre], 
    [NLYear], [NLPeriod], 
    SUM([BroughtForward]) AS 'BF', 
    SUM([CurrentPostings]) AS 'Current', 
    SUM([FuturePostings]) AS 'Future', 
    [Company] 
FROM 
    [A_DW].[dbo].[NEW_ETL AccBalance] 
WHERE 
    [Company] = 'GAR' 
    AND NLPeriod = '3' AND NLYear = '2017' 
GROUP BY 
    [AccountCode], [ExpensesCode], [CostCentre], [NLYear], [NLPeriod], [Company] 

這是自動線數據庫,並且數據是試用平衡,這樣看起來如下:

+-----+------+-----+------+---+---------+---------+------+  
| 100 | 8000 | 700 | 2017 | 3 | 1000.00 | 2000.00 | 0.00 | 
| 100 | 8001 | 700 | 2017 | 3 | 1500.00 | 4500.00 | 0.00 | 
+-----+------+-----+------+---+---------+---------+------+ 

結果應該6500.00(2000.00 + 4500.00)

+4

編輯你的問題,並提供樣品數據和預期結果。還要標記您正在使用的數據庫。你的查詢有什麼問題? –

+1

這3列的色譜柱類型是什麼?在這一點上我真的沒有看到任何錯誤。 – Jens

+0

這是非標準的SQL。你正在使用哪個DBMS? –

回答

1

根據樣本數據,您的列ExpenseCode中有多個不同的值。如果您想要將這兩行合併在一起,則需要決定如何處理該列。以下是一個選項:忽略它!

SELECT 
    [AccountCode], 
    --[ExpensesCode], --comment it out, or delete entirely 
    [CostCentre], 
    [NLYear], [NLPeriod], 
    SUM([BroughtForward]) AS 'BF', 
    SUM([CurrentPostings]) AS 'Current', 
    SUM([FuturePostings]) AS 'Future', 
    [Company] 
FROM 
    [A_DW].[dbo].[NEW_ETL AccBalance] 
WHERE 
    [Company] = 'GAR' 
    AND NLPeriod = '3' AND NLYear = '2017' 
GROUP BY 
    [AccountCode], 
    --[ExpensesCode], -- also comment out here 
    [CostCentre], 
    [NLYear], 
    [NLPeriod], 
    [Company] 
+0

這仍然不會爲我留下一行 – Herman

+0

除了'sum'列之外,輸出中的行之間還有什麼不同?如果什麼都沒有,你的'group by'子句中就有一些不需要的東西。如果事情有所不同,您需要像對待'ExpenseCode'那樣對該字段執行相同的操作。 –

+0

在上面的一條評論中,你說你需要在最終輸出中使用'ExpensesCode'。但從你提供的數據來看,這個領域有不同的價值。如果你只想在你的輸出中有一行,你需要決定如何處理這個。在單行輸出中應該爲這個字段顯示什麼?同樣的問題也適用於其他行,但「必須顯示」。請向我們展示所需輸出的完整版本。 –

0

您獲得的行數等於不同組合的數量:[AccountCode],[ExpensesCode],[CostCentre],[NLYear],[NLPeriod]

如果您需要單個行,只需從查詢中刪除這些列,並將總和列保留。

查詢可以是:

SELECT 
    SUM([BroughtForward]) AS 'BF', 
    SUM([CurrentPostings]) AS 'Current', 
    SUM([FuturePostings]) AS 'Future' 
FROM 
    [A_DW].[dbo].[NEW_ETL AccBalance] 
WHERE 
    [Company] = 'GAR' 
    AND NLPeriod = '3' AND NLYear = '2017' 

希望這有助於。

+0

嗨,它仍然沒有幫助。如果我刪除所有這些,「關鍵字FROM附近的語法錯誤」 – Herman

+0

我在答案中包含了新查詢,請檢查它。 –