我有2个表格及相关数据。 一张桌子用于产品。和其他价格。在价格表中,一个产品可能会出现几次。 如何返回显示不包含重复行的产品的结果
我的查询
select p.Product, sum(p.Qty), max(pr.netprice)
from Products p
left outer join Price pr
on p.Product=pr.Product
where p.brand=''
group by p.Product,pr.Product
但返回更多行,因为右表有多条记录
请帮助
答案 0 :(得分:2)
我认为不应该有明确的方法,我认为如果正确完成,分组应该会产生你想要的东西。另外,我认为您不需要对两个表中的值进行分组。您应该真正理解您想要的内容。给我们提供示例数据,它将更容易回答您的问题。试试这个:
select p.Product, sum(p.Qty), max(pr.netprice)
from Products p
left outer join Price pr on p.Product = pr.Product
where p.brand = ''
group by p.Product -- only group on param.
答案 1 :(得分:1)
使用distinct关键字。这将删除重复。虽然,如果给定产品的价格不同,如果您删除Max(),每个产品的每个唯一价格将有一条记录。
select DISTINCT p.Product, sum(p.Qty),max(pr.netprice)
from Products p
left outer join Price pr on p.Product=pr.Product
where p.brand='' group by p.Product,pr.Product
答案 2 :(得分:0)
尝试将select放入select中。我不确定它会起作用,但试试吧。
答案 3 :(得分:0)
如果您想要总和,请使用上面的Tomas答案。这将为您提供唯一的产品清单,其中包含每种产品的总数量和最高价格
select p.Product, sum(p.Qty), max(pr.netprice)
from Products p
left outer join Price pr on p.Product = pr.Product
where p.brand = ''
group by p.Product
答案 4 :(得分:0)
如何以这种方式改变它:
SELECT p.Product, sum(p.Qty),
(SELECT max(pr.netprice)
FROM Price pr
WHERE p.Product=pr.Product
)
FROM Products p
WHERE p.brand=''
答案 5 :(得分:-1)
试试这个
SELECT p.Product,p.Qty,MAX(pr.netprice) 来自产品p LEFT OUTER JOIN价格pr ON p.Product = pr.Product 在哪里p.brand ='' GROUP BY p.Product,p.Qty