J'essaie d'écrire une vue dans SQL Server 2012 où je calcule la somme mobile de 30 jours pour un ensemble de transactions.La somme mobile de 30 jours à l'aide de la clause OVER dans SQL Server 2012
scénario actuel:
SELECT CustNo, TransactionDate, TransactionAmount, SUM(TransactionAmount)
OVER (PARTITION BY CustNo ORDER BY TransactionDate) AS MovingAmount
FROM dbo.TransactionData
ensemble de données:
CustNo TransactionDate TransactionAmount
1111 5/7/2015 3,000
1111 5/14/2015 3,000
2222 5/17/2015 100
1111 5/21/2015 3,000
1111 5/28/2015 3,000
3333 5/31/2015 11,000
1111 6/10/2015 3,000
Résultat attendu:
CustNo TransactionDate TransactionAmount MovingAmount
1111 5/7/2015 3,000 12,000
1111 5/14/2015 3,000 12,000
2222 5/17/2015 100 100
1111 5/21/2015 3,000 9,000
1111 5/28/2015 3,000 6,000
3333 5/31/2015 11,000 11,000
1111 6/10/2015 3,000 3,000
Autres tentatives:
SELECT CustNo, TransactionDate, TransactionAmount, SUM(TransactionAmount)
OVER (PARTITION BY CustomerNumber ORDER BY TransactionDate,
BETWEEN TransactionDate AND DATEADD(day, 30, TransactionDate))
AS MovingAmount
FROM dbo.TransactionData
Je ne comprends pas la logique que vous appliquez pour obtenir les résultats attendus – Horaciux
Pourquoi le montant mobile est 12 000 à la date de transaction 07/05/2015? Il devrait être 3000 à partir de cet exemple de données –
Zohar, il agrège la somme des transactions sur 30 jours, donc il ajoute 3000 sur 5/7, 3000 le 5/14, 3000 le 5/21 et 3000 le 5/28. –