给出下表中的客户,类别,产品,日期和价值,
Customer | Category | Product | Date | Value | Single value
------------------------------------------------------------
Cust A | Categ A | SKU A |010101| 100 | 100
------------------------------------------------------------
Cust A | Categ A | SKU B |010101| 100 |
------------------------------------------------------------
Cust A | Categ B | SKU C |010101| 99 | 99
------------------------------------------------------------
Cust A | Categ B | SKU D |010101| 99 |
如何填写“单值”列,只保留某个键组合的一个值(如客户,类别,日期)?
先谢谢
答案 0 :(得分:0)
走出困境...这是使用CTE
的一种方式,你可以修改它来做你想做的事。这会将[Single value]
列设置为您所描述的配对的MAX()
值,如partition by
语句中所示。
;WITH CTE AS
( SELECT Customer,
Category,
Date,
[Single value],
MAX([Single value]) over(partition by Customer, Category, Date) as NewVal
FROM SomeTable
)
UPDATE CTE
SET [Single value] = NewVal
答案 1 :(得分:0)
试试这个:
update t set t.[Single value]=t.[Value] from
(
select *,row_number()over(partition by Customer,Category, Date order by getdate()) as rn from #t
) as t where t.rn=1