我有一个分配库存表,其中包含案例编号(称为 TPND)和数量。我需要选择产品库存列表,但会显示产品编号(称为 TPNB)而不是箱号。我还有一个 ProductLookup 表,其中包含所有 TPNB 和 TPND。
分配库存
已分配StockID身份
TPND int
数量整数
产品查找
ProductLookupID 身份
TPND int
TPNB 整数
可以在多个案例类型 (TPND) 中提供多种产品类型 (TPNB)。所需的结果是持有的每种产品类型的总数,我使用了 sum() 函数,如下所示:
select TPNB, sum(AllocatedQty) as 'QTY'
from integration.ProductLookup as PL
inner join dbo.AllocatedStock as AStock
on PL.TPND = AStock.TPND
group by TPNB
不幸的是,ProductLookup 表包含一些重复行(无法清除的历史错误数据),其中一行包含与另一行相同的 TPND 和 TPNB。我需要加入 ProductLookup 表的唯一目的是获取 AlownedStock 表中 TPND 的 TPNB。有没有办法让连接只选择第一个匹配项?我目前遇到的问题是,对于 ProductLookup 表中具有重复行的 TPND,我返回的数量值是双倍的。
非常感谢您的帮助,
谢谢
罗布。
最佳答案
SELECT DISTINCT
应该这样做:
select TPNB, sum(AllocatedQty) as 'QTY'
from (SELECT DISTINCT TPND, TPNB FROM integration.ProductLookup) as PL
inner join dbo.AllocatedStock as AStock
on PL.TPND = AStock.TPND
group by TPNB
关于SQL 仅联接 1 行 - SQL Server 2005,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2295495/