Как добавить Row_number в результаты табличной функции - PullRequest
0 голосов
/ 23 января 2010

У меня есть функция, которая возвращает группы (кластеры) из таблицы.

create function dbo.ftAllClusters() returns table as return
select distinct Cluster from Company

Теперь мне нужно добавить RowNumber для каждой возвращаемой строки ..

Ответы [ 3 ]

1 голос
/ 23 января 2010
SELECT Cluster, ROW_NUMBER() OVER(ORDER BY Cluster) AS RowNo
FROM
(
    SELECT DISTINCT Cluster
    FROM Company
) x

Или ...

SELECT Cluster, ROW_NUMBER() OVER (ORDER BY Cluster) AS RowNo
FROM Company
GROUP BY Cluster
0 голосов
/ 23 января 2010

Вот решение, которое я разработал, есть ли лучший способ?

ALTER function dbo.ftAllClusters() returns table as return
With CTE(comno) as
(select distinct Cluster from  company)

select id=Row_number() over(order by comno),comno from cte
0 голосов
/ 23 января 2010

В SQL есть встроенная функция с именем ROW_NUMBER ()

EDIT: Согласно комментарию, потеряв отличную функцию в порядке Вы можете попробовать SubSelet

    create function dbo.ftAllClusters() returns table as return
    Select 
       Cluster
      ,(ROW_NUMBER() OVER  (order by Cluster)) as RN
   from (
         Select 
          distinct 
          ,Cluster
          from Company ) as Comp

Или Вы можете попробовать использовать Group BY вместо Distinc (я даже думаю, что это немного быстрее)

Select 
   Cluster
  ,(ROW_NUMBER() OVER  (order by Cluster)) as RN
from Company 
group by Cluster
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...