J'ai essayé mais je ne suis pas en mesure de comprendre cela. J'ai une table transactions (transaction_ID, transaction_Person_ID, Transaction_Date etc). Ce que je veux, c'est renvoyer tous les ID de transaction_person_id qui ont plus de 3 transactions par semaine pour la dernière année. Cela signifie que je dois vérifier 1-1-10 à 7-1-10 pour voir si quelqu'un a eu plus de 3 transactions pour cette période de 7 jours, puis pour 2-1-10 à 8-1-10 puis 3-1 -10 à 9-1-10 etc etc Maintenant, j'ai besoin d'utiliser une sélection récursive, mais ce que j'ai écrit ne produit pas le bon laps de temps. Ce que je l'ai écrit à ce jour est ceT-SQL récursif afin de trouver des transactions pour une période de temps
WITH Dates AS (
SELECT
[Date] = CONVERT(DATETIME,'01/01/2010')
UNION ALL SELECT
[Date] = DATEADD(DAY, 1, [Date])
FROM
Dates
WHERE
Date < '12/31/2010'
)
SELECT transaction_person_Id FROM transactions
JOIN DATES
ON transactions.transaction_date = dates.date
where transactions.Transaction_Date between dateadd(DAYOFYEAR,-7,dates.date) and dates.date
group by transaction_person_Id
having count(transaction_person_ID) >= 4
OPTION (MAXRECURSION 2000)
Merci beaucoup
PS: en mots simples ce que je dois faire est ce
select transaction_person_ID from transactions
where Transaction_Date between '2010-01-01' and '2010-01-07'
group by transaction_person_Id
having count(transaction_person_ID) >= 4
puis
select transaction_person_ID from transactions
where Transaction_Date between '2010-01-02' and '2010-01-08'
group by transaction_person_Id
having count(transaction_person_ID) >= 4
. . . . . jusqu'à ce qu'il se
select transaction_person_ID from transactions
where Transaction_Date between '2010-12-25' and '2010-12-31'
group by transaction_person_Id
having count(transaction_person_ID) >= 4
je dois avoir les résultats de ces 365 requêtes
YOu veux 360 jeux de résultats différents? – gbn