Проблема реализации оконной функции SQL Server - PullRequest
0 голосов
/ 25 сентября 2019

У меня есть структура таблицы, как показано ниже:

enter image description here

У меня есть следующий запрос, чтобы получить уникальный результат из таблицы:

 WITH Dupes AS 
 (
     SELECT    
         ID, Template_ID, Address, Job_Number, Other_Info,
         Assigned_By, Assignees, Active, seen,
         ROW_NUMBER() OVER (PARTITION BY Template_ID,Job_Number ORDER BY ID) AS RowNum
     FROM 
         Schedule  
     WHERE 
         Assignees IN ('9', '16', '22')
)
SELECT 
    ID, Template_ID, Job_Number, Address, Other_Info,
    Assigned_By, Assignees, Active, seen 
FROM 
    Dupes 
WHERE 
    RowNum = 1

Вывод вышеуказанного запроса:

enter image description here

Если Job_Number и Template_ID одинаковы, вернуть только одну строку (первая строка с использованием идентификатора).Вот почему я использовал ROW_NUMBER() OVER(PARTITION BY Template_ID,Job_Number ORDER BY ID) AS RowNum.Я не уверен, как это исправить, поскольку я редко использовал эту функцию.

Мне нужно получить вывод, как показано ниже:

enter image description here

Обновлен код

Попробовал код ниже: enter image description here

1 Ответ

1 голос
/ 25 сентября 2019

кажется, что вы пытаетесь сгруппировать по Job_Number, удалите Template_ID в вашем partition by предложении

 WITH Dupes AS 
 (
      SELECT  ID,Template_ID,Address,Job_Number,Other_Info,Assigned_By,Assignees,Active,seen,
      ROW_NUMBER() OVER(PARTITION BY rtrim(ltrim(Job_Number)) ORDER BY  ID) AS RowNum
      FROM Schedule  
      WHERE Assignees IN('9','16','22')
  )
  SELECT ID,Template_ID,Job_Number,Address,Other_Info,Assigned_By,Assignees, Active,seen FROM Dupes WHERE RowNum=1
...