SQL Server 重复数据

Posted

技术标签:

【中文标题】SQL Server 重复数据【英文标题】:SQL Server repeating data 【发布时间】:2014-10-28 20:07:59 【问题描述】:

我正在处理一个用商品名称计算数量的字符串。我得到的错误是第一列[Doc No] 正在此视图的其他行上共享。

这导致我得到一个不准确的数字。

例子:

这条 SQL 语句应该会给我答案 2。

SELECT  
    Item, Sum(WOQtyOrdered) As Quantity
FROM 
    [DLI-US].[dbo].[qryrptWorkOrder]
WHERE 
    [Doc No] = 10017 
GROUP BY
    Item

而是给了我 8 个。

当我尝试使用这条 SQL 语句时

SELECT * 
FROM [DLI-US].[dbo].[qryrptWorkOrder]
WHERE [Doc No] = 10017 

这个假定的不同数字有 4 行。

该行再次重复,尽管数据在细微的方面略有不同,但对我来说很重要的数据却没有,它仍然是相同的。我这样做是因为不确定这是否意味着什么。但我想知道我能做些什么来只计算一次[Doc No],然后从该行中抓取一次WOQtyOrdered,然后转到下一个[Doc No]

感谢您的帮助。

【问题讨论】:

您是要计数还是总和? 尝试将 SUM 更改为 MIN。 问题是,如果有几行具有相同的DocNo,每行可能有不同的WOQtyOrdered;很有可能,您需要更好地了解情况;但是,如果你只想要一个,你可以使用 GROUP BY 和 min/max/avg 来选择你想要的 WOQtyOrdered 的值。 对我来说真的听起来像视图需要修复。尝试将结果集限制为每种类型的 id (也想到窗口函数)的问题在于,随着基础数据的变化,很难保证在查询后获得相同的行返回查询。也许这在您的用例中不是问题,但它给了我heebie jeebies。 @okaram 不,WOQtyOrdered 在该特定文档号上是相同的。我有更糟糕的文档编号重复 9 次且数量始终相同的情况。它不是改变的数量,而是我不需要的不相关的列数据。 【参考方案1】:

我认为你想要得到的是count()MIN() 之类的WOQtyOrdered

SELECT  Item, 
MIN(WOQtyOrdered) As Min_Quantity,
COUNT(WOQtyOrdered) AS Quantity
FROM [DLI-US].[dbo].[qryrptWorkOrder]
Where [Doc No] = 10017 
Group by Item

【讨论】:

以上是关于SQL Server 重复数据的主要内容,如果未能解决你的问题,请参考以下文章

怎么样删除SQL SERVER 数据库中重复的数据

SQL SERVER 2005删除重复数据

SQL SERVER 查询删除重复数据

SQL SERVER 查询删除重复数据

sqlserver 数据有重复怎么删除

SQL Server 一列或多列重复数据的查询,删除