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 重复数据的主要内容,如果未能解决你的问题,请参考以下文章