Фильтровать столбец с определенными критериями из другого столбца в SQL Server - PullRequest
0 голосов
/ 04 октября 2019

Я пытаюсь отфильтровать Таблицу1:

 Table1

 Region             mCode   pCode
 Europa               AD    E
 Rest of the world    AD    O
 East Europa          AE    O
 Outside              AE    L
 Rest of the world    AE    E
 Asia                 AF    O
 North America        AG    D
 Rest of the world    AG    L
 North America        AI    D
 Rest of the world    AI    L
 America              AI    L

Существует четыре различных значения для pCode (D, L, E, O) и mCode, которые можно повторить.

Мне нужно получить только те строки, где mCode имеет pCode с наивысшим приоритетом в соответствии с:

Highest priority     pCode = D
Second priority      pCode = L 
Third priority       pCode = E 
last priority        pCode = O 

Например, mCode 'AE' отображается в 3 строках, а pCode 'O',«L» и «E» в разных строках. В соответствии с приоритетом pCode, результат показывает строку, где pCode является вторым приоритетом «L», поскольку для «AE» нет строки с более высоким приоритетом, чем «L». Остальные строки не имеют большого значения.

Желаемый результат имеет уникальные значения mCode:

 Region            mCode    pCode
 Europa            AD       E
 Outside           AE       L
 Asia              AF       O
 North America     AG       D
 North America     AI       D

1 Ответ

3 голосов
/ 04 октября 2019

Я думаю, это то, что вы пытаетесь сделать, хотя это не на 100% ясно из вопроса:

select *

from (

  select *
       , row_number() over (
           partition by [Region] 
           order by case when [pCode] = 'D' then 1
                         when [pCode] = 'L' then 2
                         when [pCode] = 'E' then 3
                         when [pCode] = 'O' then 4
                         else 5 end) as [RN]

  from Table1
  ) sub

where [RN] = 1
and [pCode] in ('D','L','O','E')

SQL Fiddle

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