2013-09-25 4 views
0

Я хотел бы знать, есть ли способ сделать следующее в сценарии SQL Server.SQL ROW_NUMBER LIKE Функция

Допустим, у меня есть следующая таблица

** Для того, чтобы сделать простые вещи, идентификаторы в примере являются INT. В моем реальном сценарии, это UniqueIdentifier

ParentId  ChildId 
----------------------- 
101   201   
101   202  
101   203  
102   204   
102   205  
103   206  
103   207  
103   208   
103   209  

Я хотел бы запросить таблицу, чтобы получить следующий результат.

До сих пор мне удалось получить столбец ChildIndex, используя функцию ROW_NUMBER(). Я теперь борется с колонкой ParentIndex ...

ParentId  ChildId ChildIndex ParentIndex 
--------------------------------------------------- 
101   201  1    1 
101   202  2    1 
101   203  3    1 
102   204  1    2 
102   205  2    2 
103   206  1    3 
103   207  2    3 
103   208  3    3 
103   209  4    3 

Вот мой запрос до сих пор

SELECT ParentId, 
     ChildId, 
     ROW_NUMBER() OVER (PARTITION BY ParentId ORDER BY ParentId DESC) AS ChildIndex 
FROM MyTable 

ответ

1

DENSE_RANK() все, что вам нужно.

DENSE_RANK() OVER (ORDER BY ParentId DESC) AS ParentIndex 
+0

Спасибо ... Я попробовал это раньше, но я сохранил предложение PARTITION BY в моем запросе ... Вот почему это не сработало. – Baral

Смежные вопросы