Bonjour à tous,

Ma question porte sur une sommation conditionnelle par fenêtrage et elle est la suivante: Est il possible de remplacer la sous requête conditionnelle ci-dessous par un calcul par fenêtrage.

La requête d'origine

Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
select 
	id
	col1
	,(select SUM(col1)
		from temp b
		where b.LTime>=a.LTime
		and b.id = a.id 
		and b.date = a.date) as NbrCol1
from temp a

La partie à modifier est donc la sous requête:
Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
select SUM(col1)
from temp b
where b.LTime>=a.LTime
and b.id = a.id 
and b.date = a.date) as NbrCol1

Par un code du genre

Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
 sum (case when LTime>=LTime then b.col1 else 0 end ) over (partition by id, date) as NbrCol1

Sachant qu'en l'état, la condition sur LTime est inopérante car les LTime qui doivent être comptabilisés sont ceux des enregistrements qui ont le même id et date que l'enregistrement considéré de temp a mais avec un LTime> au LTime de l'enregistrement considéré de temp a

J'avais pensé à un
Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
 inner join temp b on a.id = b.id and a.date = b.date
pour faire
Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
 sum (case when b.LTime>= a.LTime then b.col1 else 0 end ) over (partition by b.id, b.date) as NbrCol1
mais ça paraît pas très propre car ne respectant pas la philosophie du fenêtrage et sachant que je ne connait pas les champs qui forment la clé de la table temp a

Merci pour toute aide apportée

A+