Как использовать строку Num () в SQL на основе повторяющихся значений - PullRequest
0 голосов
/ 20 мая 2019

В Sql у меня есть следующие данные на основе Ite и Rev, он вычисляет номер строки

Folder  FileName    VersionId   DocumentID  DocumentVersion Rev Ite Duplicate
\\abc\\ abc.sldprt  V1  D00001  1   A   1   1
\\abc\\ abc.sldprt  V12 D00001  12  A   1   2
\\abc\\ abc.sldprt  V2  D00001  2   B   1   1
\\abc\\ abc.sldprt  V3  D00001  3   B   2   2
\\abc\\ abc.sldprt  V4  D00001  4   B   3   3
\\abc\\ abc.sldprt  V5  D00001  5   C   1   1
\\abc\\ abc.sldprt  V6  D00001  6   C   2   2
\\abc\\ abc.sldprt  V7  D00001  7   C   3   3
\\abc\\ abc.sldprt  V8  D00001  8   C   4   4
\\abc\\ abc.sldprt  V9  D00001  9   D   1   1
\\abc\\ abc.sldprt  V10 D00001  10  D   2   2
\\abc\\ abc.sldprt  V11 D00001  11  E   1   1

Я использовал запрос ниже, чтобы сгенерировать эту таблицу.

select * , 
       ROW_NUMBER() OVER (PARTITION BY Folder, DocumentID, Rev order by Rev, Ite) As "Duplicate"
from Versions v1;

Есть ли какие-либоспособ вычисления, если Rev & Ite одинаковы, то только увеличение номера строки скажем 1,2,3, а если Rev и Ite уникальны, то присваивается только 1, поэтому я получаю повторяющиеся значения на основе Rev & Ite.

Желаемый результат выглядит как

 Folder FileName    VersionId   DocumentID  DocumentVersion Rev Ite Duplicate
    \\abc\\ abc.sldprt  V1  D00001  1   A   1   1
    \\abc\\ abc.sldprt  V12 D00001  12  A   1   2
    \\abc\\ abc.sldprt  V2  D00001  2   B   1   1
    \\abc\\ abc.sldprt  V3  D00001  3   B   2   1
    \\abc\\ abc.sldprt  V4  D00001  4   B   3   1
    \\abc\\ abc.sldprt  V5  D00001  5   C   1   1
    \\abc\\ abc.sldprt  V6  D00001  6   C   2   1
    \\abc\\ abc.sldprt  V7  D00001  7   C   3   1
    \\abc\\ abc.sldprt  V8  D00001  8   C   4   1
    \\abc\\ abc.sldprt  V9  D00001  9   D   1   1
    \\abc\\ abc.sldprt  V10 D00001  10  D   2   1
    \\abc\\ abc.sldprt  V11 D00001  11  E   1   1

Так что здесь 1 дублируется 2 раза

, пожалуйста, помогите или любые предложения.

Ответы [ 2 ]

0 голосов
/ 20 мая 2019

Я думаю, что вы хотите:

select v.* , 
       row_number() over (partition by Folder, DocumentID, Rev, Ite 
                          order by versionId
                         ) As Duplicate
from Versions v;
0 голосов
/ 20 мая 2019

Это просто, измените раздел в оконной функции на partition by Rev, Ite

select 
    * , 
    ROW_NUMBER() OVER (PARTITION BY Rev, Ite order by Rev, Ite) As "Duplicate" 
from Versions v1;

Я надеюсь, что это решит проблему

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...