Erreur SQL sur la vue UPDATE avec GROUP BY

C'est la vue

SELECT src.OfferAngebotsnummer AS OAngNr1, SUM(src.Summe2) AS Summe, CSDokument_1.OfferAngebotsnummer AS OAngNr2, CSDokument_1.Auftragsvolumen FROM ( SELECT OfferAngebotsnummer, ROUND(Angebotssumme, 2) AS Summe2 FROM dbo.CSDokument WHERE (MANeu = 'AS400') AND (Art = '3') AND (DokumentTyp = '3')) AS src INNER JOIN dbo.CSDokument AS CSDokument_1 ON src.OfferAngebotsnummer = CSDokument_1.OfferAngebotsnummer GROUP BY src.OfferAngebotsnummer, CSDokument_1.OfferAngebotsnummer, CSDokument_1.Auftragsvolumen 

Et UPDATE instruction UPDATE

 update UpdateAuftragsvolumenAngebot set Auftragsvolumen = Summe where Auftragsvolumen <> Summe 

Mais j'obtiens une erreur qu'il n'est pas autorisé à utiliser UPDATE à l'affichage avec la clause group by .

 Cannot update the view or function 'UpdateAuftragsvolumenAngebot' because it contains aggregates, or a DISTINCT or GROUP BY clause, or PIVOT or UNPIVOT operator. 

Comment puis-je accomplir la mise à jour?

Je suggère de ne pas utiliser la vue et de simplement le déplacer dans une sous-requête corrélée comme ci-dessous. Je suggère que parce que dès que vous agrégez une vue, vous ne pouvez pas mettre à jour les tables sous-jacentes.

 update CSDokument set Auftragsvolumen = Summe from CSDokument inner join ( SELECT OfferAngebotsnummer, ROUND(Angebotssumme, 2) AS Summe2 FROM dbo.CSDokument WHERE (MANeu = 'AS400') AND (Art = '3') AND (DokumentTyp = '3')) AS src INNER JOIN dbo.CSDokument AS CSDokument_1 ON src.OfferAngebotsnummer = CSDokument_1.OfferAngebotsnummer GROUP BY src.OfferAngebotsnummer, CSDokument_1.OfferAngebotsnummer, CSDokument_1.Auftragsvolumen ) as s on s.OfferAngebotsnummer = CSDokument.OfferAngebotsnummer where CSDokument.Auftragsvolumen <> s.Summe 

Je crois que vous devriez utiliser le groupe par dans votre sous-requête et non à l'étape de la jointure.