在结构中,直到今天仍未找到解决方案。 我需要确定产品组是混合还是唯一的。Oracle SQL;确定值是否唯一或不在组中
标准:
如果所有的SKU在托盘有产品组LAMINAAT - > LAM
如果所有的SKU在托盘有产品组设备配件 - > ACC
如果它是一个组合LAMINAAT设备配件 - > MIX
只要1 SKU有一个产品组≠LAMINAAT或设备配件 - >将此字段留空
我目前的SELECT语句的结果给出了如下的结果:
ORDER_ID, PALLET_ID, SKU_ID, PRODUCT_GROUP
80081876 00257084646912345679 9410-3798 ACCESSORIE
80081876 00257084646912345679 9420-3012 ACCESSORIE
80081876 00257084646912345679 9410-3012 ACCESSORIE
80081876 00257084646912345679 9410-3010 ACCESSORIE
80081876 00257084646912345678 9420-3865 ACCESSORIE
80081876 00257084646912345678 9410-3857 ACCESSORIE
80081876 00257084646912345678 9420-3010 ACCESSORIE
80081876 00997084646920000197 3010-3798 LAMINAAT
80081876 00280120160000000001 9420-3853 ACCESSORIE
80081876 00280120160000000001 9420-3895 ACCESSORIE
80081876 00280120160000000001 9320-3853 LAMINAAT
80081876 00280120160000000001 9420-3798 ACCESSORIE
的结果集数据应该说:
Pallet id product group
00257084646912345679 ACC
00280120160000000001 MIX
00997084646920000197 LAM
我想这个代码
WITH cte AS
(SELECT pallet_id,
COUNT(DISTINCT PRODUCT_GROUP) AS counter
FROM product_group_data
GROUP BY pallet_id
)
SELECT p.pallet_id,
p.PRODUCT_GROUP,
CASE WHEN c.counter = 1
THEN SUBSTR(p.PRODUCT_GROUP,1,3)
ELSE 'MIX'
END uniq
FROM product_group_data p
JOIN cte c
ON p.pallet_id = c.pallet_id 的
这涵盖了1,2,3的标准..可悲不是4.
任何想法都比较欢迎届时
谢谢
+0
我不知道我明白你“问。你想要的结果是什么?添加到每个行的LAM/ACC/MIX类型的当前搜索结果中的字段,还是只包含托盘ID和类型的字段? –
+0
很抱歉的不明确的问题.. 是的,我想有一个结果,说: 顺序:80081876 托盘:00257084646912345679 Productgroup:ACC 或者如果托盘包含laminaar设备配件:混合 –
+0
你说在你的问题中不同的东西(下面的答案可以解决),order_id不包括在那里。 –