我遇到查询问题。我的目标是获得所有产品名称,质量单位,数量和托盘数量。问题在于物品的托盘数量。
QUERY:
SELECT "Product_Name"
, "Unit_of_Mass"
, SUM("Quantity_Per_UOM")
, Count(*) as "Number_Of_Pallet"
FROM
(select p.prod_desc as "Product_Name"
, s.quantity as "Quantity_Per_UOM"
, u.description as "Unit_of_Mass"
, s.container_id
, s.product_id
from wms_stock s
join wms_product p on p.product_id = s.product_id
join wms_uom u on p.uom_base_id = u.uom_id
)
group by "Product_Name", "Unit_of_Mass"
它几乎可以工作。问题是我需要在Count(*)中做一些条件(这是我认为应该做的)。在表格wms_stock
中,我获得了product_id
和container_id
,当它们在某一行中相同时,它应将托盘数量计为1
,但仍会添加数量。
所以从第一次选择:
Product_Name | Quantity | UnitOfMass | ContainerId | ProductId
A | 2 | kg | 10 | 11
A | 1 | kg | 10 | 11
B | 2 | kg | 11 | 12
我应该得到结果
Product_Name | Quantity_Per_UOM | UnitOfMass | Number_Of_Pallet
A | 3 | kg | 1
B | 2 | kg | 1
答案 0 :(得分:1)
您可以在选择列表中尝试以下条件 -
COUNT(DISTINCT ContainerId || ProductId)
仅为了您的信息,||
不是运营商,而是Oracle中的连接运算符。所以我只是将两个列连接起来并从中获取不同的颜色。