我正在尝试找到一种方法,如何将一列中除一个重复值之外的所有重复值都设置为零而不删除行。下面是一个显示示例的简化示例。如果同一订单有多个条目,则需要将重复值设置为零的列为“总计”。
初始数据结构
fb.publicationsCollection
.doc("pubdata")
.get()
.then(res => {
let pubData = Object.entries(res.data());
// pubData will look like:
// [["1892872", {…}], ["1892875", {…}]]
})
所需的数据结构
N Date Order Total Amount
1 31.12 10007 100,00
2 31.12 10007 100,00
我希望这是可能的。非常感谢您的帮助!
马克西
答案 0 :(得分:0)
您可以使用EXISTS做到这一点:
select
t.productcode, t.orderdate, t.order,
case when exists (
select 1 from tablename
where productcode < t.productcode and
orderdate = t.orderdate and order = t.order and
amount = t.amount
) then 0.0 else t.totalamount end totalamount
from tablename t
答案 1 :(得分:0)
您可以在select
中使用case
和row_number()
来做到这一点:
select N, Date, OrderNum,
(case when row_number() over (partition by ordernum order by n) = 1
then Total_Amount
else 0
end) as total_amount
from t;
注意:order
对于列来说确实是个坏名字,因为它是一个SQL关键字。这就是为什么我将其更改为ordernum
。