質問に問題があります。私の目標は、製品名、質量の単位、数量、パレットの数を取得することです。問題はアイテムのパレットの数です。Oracle - 条件条件ケース
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(*)で何らかの条件を実行する必要があることです(これは私がやるべきことだと思います)。テーブルには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
あなたは 'COUNT(DISTINCT Number_Of_Pallet) 'を試すことができます。 –
その結果、Number_Of_Palletの結果は1となりました。カウントと条件に問題はないかもしれません。 –
これを試してください - 'COUNT(DISTINCT ContainerId || ProductId)' –