【发布时间】:2017-07-26 08:37:53
【问题描述】:
我正在尝试通过一个普通的 sql 语句得到一个总和,但代码不起作用。技术:SQL Server 2014
这是代码:
select
ZABF$,ZUNR$,ZONR$,FPLN$,ZSTR$,right(left(GABS$,3),2) as Region
,SUM(Nettobetrag) AS NettoUmsatz
,SUM(BRUTTOBETRAG) AS BruttoUmsatz
,SUM(Nettobetrag) over (partition by ZABF$,ZUNR$,ZONR$,FPLN$,right(left(GABS$,3),2))
from
ArchivZBEW.PROD.sFCTS_G195
where
NETTOBETRAG<>0 and right(left(GABS$,3),2)<>'65'
and UTYP$ in('K','M','P')
group by
ZABF$,ZUNR$,ZONR$,FPLN$,ZSTR$,right(left(GABS$,3),2)
如您所见,我尝试获取第一行中所有列的输出,然后是不同的总和。 NettoUmsatz 和 Bruttoumsatz 工作正常,正如预期的那样 - 但现在我需要另一个忽略“ZSTR $”字段的总和。我将此查询作为 CTE 的一部分,因此最好将它包含在此语句中,否则我必须加入表两次,并且语句变得非常慢。
错误代码:(德语):
Die ArchivZBEW.PROD.sFCTS_G195.NETTOBETRAG-Spalte ist in der Auswahlliste ungültig, da sie nicht in einer Aggregatfunktion und nicht in der GROUP BY-Klausel enthalten ist.
感谢谷歌翻译:
archiveZBEW.PROD.sFCTS_G195.NETTOBETRAG 列在选择列表中无效,因为它不包含在聚合函数中,也不包含在 GROUP BY 子句中。
【问题讨论】:
-
我看不出
GROUP BY的意义,请显示示例数据和预期输出以使您的问题更清楚。 -
Deutsche Fehlermeldungen bedeuten nichts für englische Leser。 archiveZBEW.PROD.sFCTS_G195.NETTOBETRAG 列在选择列表中无效,因为它不包含在聚合函数中,也不包含在 GROUP BY 子句中。顺便说一句,我什至不会说德语。
标签: sql sql-server tsql