我正在寻找一种方法来重新聚合某些行,并使用来自另一个表的给定聚合信息。
这是详细的门票表:
ticket_id SKU qty
1 A 1
1 B 2
1 C 1
1 D 1
1 E 1
2 F 1
2 G 2
2 B 1
2 H 2
这是Packs组合表:
group_id SKU SKU_qty
A1 A 1
A1 B 2
A1 C 1
A1 D 1
B2 F 1
B2 G 2
B2 B 1
从详细的票证表中,我们可以看到:
因此,将所有包sku合并为1行后得到的表格将给出:
ticket_id SKU qty
1 A1 1
1 E 1
2 B2 1
2 H 2
门票可以有其他SKU - 不属于任何包装;同一个SKU可以在多个包装中找到。
有多种语言可供使用(SQL,SAS或R),但是我的第一个"镜头"将尝试SQL。
我真的不知道从哪里开始......提前谢谢
答案 0 :(得分:1)
您可以尝试以下查询
SELECT ticket_id,
case when sku is null then sku1 else group_id end group_id,
qty
FROM(
select ticket_id, group_id, g.sku, d.sku sku1,
ROW_NUMBER() OVER(PARTITION BY ticket_id) row_num,
qty
from detail d
left join grouping_ g
on d.SKU = g.SKU
order by ticket_id, D.sku)T1
WHERE sku IS NULL OR row_num = 1;
以下是我得到的输出,
希望这会帮助你。