我试图通过将一个分区的总和转换为普通的sql语句,但代码无法工作。技术:SQL服务器2014T-SQL-与分组结合使用分组的总和
下面的代码:
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的一部分,所以在这个语句中使用它会很好,否则我必须加入表格两次,语句变得非常慢。
错误码:(德文):
模具ArchivZBEW.PROD.sFCTS_G195.NETTOBETRAG-Spalte IST在DER Auswahllisteungültig,哒SIE nicht在einer Aggregatfunktion UND nicht在DER GROUP BY-Klausel enthalten IST。
感谢谷歌翻译:因为它不是在聚合函数,并包含在GROUP不包含BY子句
的archiveZBEW.PROD.sFCTS_G195.NETTOBETRAG列是在选择列表中无效。
我没看见GROUP BY'的要点请显示样本数据和预期结果,以使问题更清晰。 –
Deutsche Fehlermeldungen bedeuten nichtsfürenglische Leser。 archiveZBEW.PROD.sFCTS_G195.NETTOBETRAG列在选择列表中无效,因为它不包含在聚合函数中,并且不包含在GROUP BY子句中。顺便说一句,我甚至不会说德语。 –