J'ai une requête:défi groupement SQL
select event_type,
department_name,
effective_time,
row_number() OVER (PARTITION BY event_type,department_name ORDER BY effective_time) row
from a
order by effective_time
Il retourne un ensemble de lignes:
event_type department_name effective_time
3 A 02/10/09 13:12:00
3 B 02/10/09 15:44:00
3 B 02/10/09 20:36:00
7 C 04/01/09 00:01:00
7 D 04/10/09 00:01:00
7 D 04/20/09 00:01:00
7 E 04/20/09 00:01:00
7 F 04/23/09 09:32:00
7 F 05/15/09 12:21:00
7 G 05/15/09 12:21:00
7 H 05/15/09 12:21:00
1 H 07/28/09 08:51:00
1 G 07/28/09 08:51:00
1 F 07/28/09 10:40:00
1 F 07/28/09 12:34:00
1 H 07/28/09 12:34:00
1 G 07/28/09 12:34:00
1 D 07/29/09 10:45:00
1 D 07/29/09 12:48:00
1 G 07/31/09 13:47:00
1 F 07/31/09 13:47:00
1 D 08/03/09 00:01:00
3 B 08/03/09 10:39:00
je besoin de la ligne du jeu pour ressembler à:
event_type department_name effective_time
3 A 02/10/09 13:12:00
3 B 02/10/09 15:44:00
7 C 04/01/09 00:01:00
7 D 04/10/09 00:01:00
7 E 04/20/09 00:01:00
7 F 04/23/09 09:32:00
7 G 05/15/09 12:21:00
7 H 05/15/09 12:21:00
1 H 07/28/09 08:51:00
1 G 07/28/09 08:51:00
1 F 07/28/09 10:40:00
1 H 07/28/09 12:34:00
1 G 07/28/09 12:34:00
1 D 07/29/09 10:45:00
1 G 07/31/09 13:47:00
1 F 07/31/09 13:47:00
1 D 08/03/09 00:01:00
3 B 08/03/09 10:39:00
Essentiellement, la suppression la deuxième (ou plus) occurrence d'un event_type et d'un department_name dans le groupe.
J'espérais utiliser le row_number pour résoudre ce problème, en éliminant toute la ligne #> 1.
Malheureusement, comme il est écrit, la fonction row_number() ne parvient pas à remettre le compteur de la ligne après un changement de event_type et Nom du département.
Questions:
- Peut-on régler le calcul de row_number()?
- Y a-t-il une autre approche qui fonctionnerait plus efficacement?
- Est-ce possible sans intervention programmatique (procédure stockée ou fonction UDF)?
Merci pour votre aide.
Pourquoi quelqu'un a-t-il déprécié la question? Quel est le problème avec la question elle-même? – shahkalpesh