【问题标题】:Removing duplicate results删除重复结果
【发布时间】:2017-04-25 18:30:26
【问题描述】:

我有一些记录的视图,其中许多是重复的。我需要过滤记录并从每个记录中获取一个。

我试过了

SELECT TOP 1 Item, Code, Desc, '1' AS Qty FROM vwTbl1 WHERE Code = '12' OR Code = '311'

也尝试了 DISTINCT,但我仍然得到所有记录。

但在这种情况下,它只显示一条记录。按代码分组不起作用。 有没有其他方法可以解决这个问题?

    Item | Code   | Desc | QTY  

 a       |   12   |  1   |1
 a       |   311  |  2   |1
 b       |   12   |  3   |1
 b       |   311  |  4   |1
 c       |   1    |  5   |1   

结果应该是这样的:

    Item | Code   | Desc | QTY  

 a       |   12   |  1   |1
 b       |   311  |  3   |1  

所以对于每个条件获取第一条记录。

【问题讨论】:

  • 指定您的样本数据和预期结果
  • 如果你想要多条记录,为什么要使用TOP 1
  • 我认为使用 TOP 1 我将只获得每个条件的一条记录(一条记录,其中代码 = 12,一条记录来自代码 = 311)

标签: sql sql-server-2008 select view


【解决方案1】:

典型的做法是使用row_number()

SELECT TOP 1 Item, Code, Desc, 1 AS Qty
FROM (SELECT v.*,
             ROW_NUMBER() OVER (PARTITION BY Code ORDER BY (SELECT NULL)) as seqnum
      FROM vwTbl1 
      WHERE Code IN ('12', '311') -- don't use single quotes if these are numbers
     ) v
WHERE seqnum = 1;

【讨论】:

  • 仍然打印出 1 条记录。
  • @Josef 。 . .那么,据推测,数据中只有一个代码。
【解决方案2】:
SELECT Top 1 *
FROM 
(
  SELECT Item, Code, Desc, '1' AS Qty 
  FROM vwTbl1 WHERE Code = '12' OR Code ='311'
)A

Edited Code based on your expected result:

Declare @YourTable table (Id INT IDENTITY(1,1),Item varchar(50),Code INT,       
_Desc INT,Qty INT)
 Insert into @YourTable
 SELECT 'a',12,1,1 UNION ALL
 SELECT 'a',311,2,1 UNION ALL
 SELECT 'b',12,3,1 UNION ALL
 SELECT  'b',311,4,1 UNION ALL
 SELECT  'c',1 ,5 ,1   

 SELECT Item ,A.Code , _Desc ,Qty
 FROM @YourTable T
 JOIN 
 (
  SELECT MAX(Id) Id, Code FROM @YourTable GROUP BY Code
 )A ON A.Id = T.Id  

【讨论】:

  • Stil 只打印出 1 条记录
  • 您必须指定您的样本数据和预期结果,然后只有其他人才能轻松提供答案
  • 在您的帖子中预期的输出是正确的值..?因为每个标准中的前 1 意味着“b”也是代码值 12.检查并更新正确的帖子
  • 这是正确的输出,因为每个项目可以包含相同的代码。我的输出示例项目 A 包含代码 12,但项目 B 也包含代码 12,但我只需要一个包含代码 12 的项目。
  • 我更新了我的帖子。试试这个是否满足你的结果
猜你喜欢
  • 1970-01-01
  • 2020-02-04
  • 1970-01-01
  • 2015-12-06
  • 2015-12-19
  • 2018-04-19
  • 1970-01-01
  • 1970-01-01
  • 2011-11-30
相关资源
最近更新 更多