Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL Server:对列求和_Sql_Sql Server - Fatal编程技术网

SQL Server:对列求和

SQL Server:对列求和,sql,sql-server,Sql,Sql Server,我已经尽我所能把当前的列加起来了。”BF、Current和Future都应该等于零,我只需要快速检查一下就可以了 代码 SELECT [AccountCode], [ExpensesCode], [CostCentre], [NLYear], [NLPeriod], SUM([BroughtForward]) AS 'BF', SUM([CurrentPostings]) AS 'Current', SUM([FuturePostings]) AS 'F

我已经尽我所能把
当前的
列加起来了。”BF、Current和Future都应该等于零,我只需要快速检查一下就可以了

代码

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]
这是Autoline数据库,数据是试算表,如下所示:

+-----+------+-----+------+---+---------+---------+------+    
| 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)

您得到的行数等于以下不同组合的数目:[AccountCode]、[ExpensesCode]、[CostCentre]、[NLYear]、[NLPeriod]

如果需要一行,只需从查询中删除这些列,并保留sum

查询可以是:

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'

希望这有帮助

根据示例数据,您的列
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]

编辑您的问题并提供示例数据和所需结果。同时标记您正在使用的数据库。您的查询有什么问题?这3列的列类型是什么?在这一点上,我没有发现任何错误。这是非标准SQL。您使用的是哪种DBMS?我很有信心这是MS SQL Server。@a_horse_,没有名称:似乎是SQL Server。这仍然没有为我留下一行,除了“sum”列,输出中的行之间还有什么不同?如果没有,则在
group by
子句中有不需要的内容。如果确实存在差异,您需要对该字段执行与我们对
ExpenseCode
相同的操作。您在上面的一条评论中说,您需要在最终输出中使用
ExpenseCode
。但根据您提供的数据,该字段中有不同的值。如果您只想在输出上显示一行,则需要决定如何处理该行。在您的单行输出中,该字段应该显示什么?同样的问题也适用于行间不同但“必须显示”的任何其他内容。请向我们展示所需输出的完整版本。嗨,它仍然没有帮助。如果我删除了所有这些,“关键字FROM附近的语法不正确”我在答案中包含了新查询,请检查它。