Search code examples
sql-serverrow-number

SQL Server window function implementation issue


I have a table structure like below:

enter image description here

I have the following query to get the unique result from the table:

 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

Output of the above query is:

enter image description here

If the Job_Number and Template_ID are same, only return one row(first row using ID). That is why I did use ROW_NUMBER() OVER(PARTITION BY Template_ID,Job_Number ORDER BY ID) AS RowNum. I am not sure how to fix this as I rarely used this function.

I need to get the output like below:

enter image description here

Updated Code

Tried the code below: enter image description here


Solution

  • seems your trying to group by Job_Number, remove Template_ID on your partition by clause

     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