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附近的语法不正确”我在答案中包含了新查询,请检查它。