Benötigen Rollender-Durchschnitt3 Monate für 3 Spalten
helfenEingangs
Date A B C
2015-10-31 1.49 3.7 7.8
2015-11-30 1.45 3.6 7.6
2015-12-31 1.41 3.7 8.0
2016-01-31 1.33 3.7 8.3
2016-02-29 1.29 4.1 8.6
2016-03-31 1.46 4.4 9.7
TABLE dbo.ThreeMonth CREATE (Rdate DATE, einen Schwimmer, b FLOAT, C FLOAT)
INSERT in DBO. 3 Monate (rdate, a, b, c) VALUES ('2015.10.31', 1,49, 3.7,7.8) INSERT in dbo.threemonth (rdate, a, b, c) VALUES (‚2015- 11-30 ', 1.45, 3.6, 7, 6)
INSERT in dbo.threemonth (Rdate, a, b, c) VALUES ('2015-12-31', 1,41, 3.7,8.0)
INSERT in dbo.threemonth (Rdate, a , b, c) VALUES ('2016.01.31', 1,33, 3.7,8.3)
INSERT in dbo.threemonth (rdate, a, b, c) VALUES (‚2016.02.29 ', 1.9, 4.1,8.6)
INSERT in dbo.threemonth (RDate, a, b, c) VALUES ('2016.03.31', 1,46, 4.4,9.7)
INSERT in dbo.threemonth (Rdate, a, b, c) VALUES ('2016.04.30', 1,35, 4,3 , 9.4)
SELECT * FROM 3 Monate
--Tried die folgende Abfrage
select rdate, avg (A)
OVER ( ORDER BY rdate Reihen zwischen 2 und CURRENT ROWVORHERGEHENDEN) VON 3 Monate
OutPut
Ich brauche 3-Monats-Durchschnitt für 3 Spalten a, b, um Rollen, c .WHEN I AVG ADD (b) und AVG (c) es gibt ERROR
"Spalte" threemonth.RDate 'ist in der Auswahlliste ungültig, da sie weder in einer Aggregatfunktion noch in der GROUP BY-Klausel enthalten ist. "
--Also Ich möchte die Ausgabe im Format folgenden
2015-10-31 NULL -- Because 3 months are not available avg cannot be calculated
2015-11-30 NULL -- Because 3 months are not available avg cannot be calculated
2015-12-31 1.45
2016-01-31 1.39666666666667
2016-02-29 1.54666666666667
2016-03-31 1.56333333333333
2016-04-30 1.57 code here
Kann jemand raten, um das obige Problem zu lösen, WO ICH AVG nehmen müssen für mehr als 1 Spalte und Ausgangsanzeige in dem Format I oben gezeigt haben, FÜR ALLE 3 SPALTEN?
Dank. Kannst du mir helfen, wenn ich avg für Spalte b und Spalte c hinzufügen möchte? – user1143726
Meine Antwort wurde aktualisiert, um Col B und A einzuschließen –