Sql 显示只剩下一项的位置
我想显示只剩下一个项目的所有位置。尝试使用SUM函数,但它仍然为我提供了多个具有相同位置的行,其中3个行的和为1Sql 显示只剩下一项的位置,sql,oracle,group-by,aggregate,having,Sql,Oracle,Group By,Aggregate,Having,我想显示只剩下一个项目的所有位置。尝试使用SUM函数,但它仍然为我提供了多个具有相同位置的行,其中3个行的和为1 选择位置、编号、总数(数量) 从地点到库存 按地点分组,artnr 有总和(数量)=1 结果: 位置艺术品数量总和(数量) 12345 5345 1 12345 5874 1 12345 4756 1 我想要的是具有一个商品编号和一个数量的位置: 位置艺术品数量总和(数量) 1234553451您可以使用行数()窗口功能 select * from
选择位置、编号、总数(数量)
从地点到库存
按地点分组,artnr
有总和(数量)=1
结果:
位置艺术品数量总和(数量)
12345 5345 1
12345 5874 1
12345 4756 1
我想要的是具有一个商品编号和一个数量的位置:
位置艺术品数量总和(数量)
1234553451
您可以使用行数()
窗口功能
select * from ( SELECT location, artnr, sum(qty) as s,
row_number() over(partition by location order by artnr asc) rn
FROM location_stock
GROUP BY location, artnr
HAVING sum(qty) = 1
) a where a.rn=1
假设数量从不为负或零,那么这应该是可行的:
SELECT location, max(artnr) as artnr, sum(qty)
FROM location_stock
GROUP BY location
HAVING SUM(qty) = 1;
对于更一般的解决方案:
SELECT location, max(artnr) as artnr, sum(qty)
FROM location_stock
GROUP BY location
HAVING MIN(artnr) = MAX(artnr) AND
SUM(qty) = 1;
如果您实际上不关心数量,而只关心一个
artnr
,那么请删除SUM(quaty)
上的条件,为什么您只需要5345作为列Art nr,这只是一个示例。在我的示例中,我们有位置12345,其中有3篇文章。我想要的只是有一篇文章的位置。