2010-07-27 5 views
1

Voici mes données de table: -Pourquoi Rank() ne fonctionne pas comme il se doit?

Insert Into tblProduct (ProductId,ProductName,Description,Category) Values (1,'Cinthol','cosmetic soap','soap'); 
Insert Into tblProduct (ProductId,ProductName,Description,Category) Values (1,'Cinthol','cosmetic soap','soap'); 
Insert Into tblProduct (ProductId,ProductName,Description,Category) Values (1,'Cinthol','cosmetic soap','soap'); 
Insert Into tblProduct (ProductId,ProductName,Description,Category) Values (1,'Lux','cosmetic soap','soap'); 
Insert Into tblProduct (ProductId,ProductName,Description,Category) Values (1,'Crowning Glory','cosmetic soap','soap'); 
Insert Into tblProduct (ProductId,ProductName,Description,Category) Values (2,'Cinthol','nice soap','soap'); 
Insert Into tblProduct (ProductId,ProductName,Description,Category) Values (3,'Lux','nice soap','soap'); 
Insert Into tblProduct (ProductId,ProductName,Description,Category) Values (3,'Lux','nice soap','soap'); 

Quand j'émets cette requête: -

Select ProductId, 
     ProductName, 
     Description, 
     Category, 
     RANK() Over (partition by ProductId Order By ProductId) As Rank 
From tblProduct; 

Tout ce que je peux voir est le rang 1st dans chaque ligne. Où sont tous les autres rangs? rangée avec productid 2 devrait avoir le rang 6 puisque je n'utilise pas DENSE_RANK(). Pourquoi la requête ne fonctionne-t-elle pas?

Répondre

3

Vous partitionnez par ProductId - ce qui signifie que chaque 'partition' commencera RANKing à partir de 1. Essayez de supprimer le PARTITION BY ProductId.

+0

+1 exactement - bonne prise! –

+0

Pourquoi, merci! :) –

Questions connexes