web-dev-qa-db-fra.com

row_number () Grouper par?

J'ai un ensemble de données qui contient les colonnes Date, Cat et QTY. Ce que je veux faire, c'est ajouter une colonne unique qui ne compte que les valeurs Cat uniques lors du décompte des lignes. Voici à quoi je veux que mon jeu de résultats ressemble:

enter image description here

En utilisant la requête SQL ci-dessous, je peux obtenir une ligne en utilisant la fonction row_number().

Cependant, je ne peux pas obtenir cette colonne unique que j'ai décrite ci-dessus. Lorsque j'ajoute group by à la clause OVER, cela ne fonctionne pas. Quelqu'un a-t-il des idées sur la façon de faire fonctionner cette colonne de comptage unique?

SELECT 
   Date,    
   ROW_NUMBER() OVER (PARTITION BY Date ORDER By Date, Cat) as ROW,
   Cat,
   Qty
FROM SOURCE
39
user1582928

Voici une solution alternative.

Vous n'avez pas à vous soucier de la commande de Cat. En utilisant le SQL suivant, vous pourrez obtenir des valeurs uniques pour votre combinaison Date & Cat.

SELECT 
   Date,    
   ROW_NUMBER() OVER (PARTITION BY Date, Cat ORDER By Date, Cat) as ROW,
   Cat,
   Qty
FROM SOURCE
39
G.S
DENSE_RANK() OVER (PARTITION BY date ORDER BY cat)
16
Nahuel Fouilleul