【发布时间】: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 次且数量始终相同的情况。它不是改变的数量,而是我不需要的不相关的列数据。
标签: sql sql-server view syntax