SQL Windows函数实现问题

问题描述 投票:1回答:1

我的表格结构如下:

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相同,则仅返回一行(使用ID的第一行)。这就是为什么我使用ROW_NUMBER() OVER(PARTITION BY Template_ID,Job_Number ORDER BY ID) AS RowNum。我不确定如何解决此问题,因为我很少使用此功能。

我需要获得如下输出:

enter image description here

更新的代码

尝试过以下代码:enter image description here

sql row-number
1个回答
1
投票

似乎您要按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
© www.soinside.com 2019 - 2024. All rights reserved.