排除基于一个或多个其他列而不是整个行的重复值

时间:2019-06-17 12:03:47

标签: sql

我需要从产生发票明细表的复杂SQL查询的结果中删除重复的总值。

我一直在寻找示例,但是我找不到任何可以根据另一列中的值在其中一列中删除重复项的东西。

这是我拥有的数据的基本示例。我需要保持这种表格格式:

Project     Section     Reference     Section_Amount     Total
a           1           inv1          1500               1500
a           1           inv2          1000               3000
a           2           inv2          1000               3000
a           3           inv2          1000               3000
a           4           inv3          1700               1700

我需要拥有:

Project     Section     Reference     Section_Amount     Total
a           1           inv1          1500               1500
a           1           inv2          1000               3000
a           2           inv2          1000               NULL
a           3           inv2          1000               NULL
a           4           inv3          1700               1700

如您所见,发票2的总计仅显示一次。

这可能吗?

在此先感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

您可以使用row_number()

select Project, Section, Reference, Section_Amount,
       (case when row_number() over (partition by reference order by section) = 1
             then total
        end) as total
from t;