基于唯一列的Oracle SQL聚合数据

时间:2018-10-01 16:50:38

标签: sql oracle

我希望自己能实现的目标是,将成本按唯一ID分组在一起,而不是针对与发票编号相对应的唯一ID重复执行。

当前:

Unique_ID    PO#    Inv#    Cost
1            10     1X      £500
1            10     2X      £500
1            10     3X      £500
1            10     4X      £500

现在,PO的成本为500英镑,但是由于我拥有构成PO的发票,因此它会重复这些成本(我们有一个奇怪的要求要收回PO成本而不是发票成本)。相反,我会寻找类似的东西:

所需:

Unique_ID    PO#    Inv#    Cost
1            10     1X      £500
1            10     2X     
1            10     3X     
1            10     4X      

这可以通过在“费用”列上使用DISTINCT来实现吗?

1 个答案:

答案 0 :(得分:3)

您可以使用select t.*, (case when row_number() over (partition by Unique_ID, PO#, Cost order by Inv) = 1 then cost end) as cost from table t;

{{1}}