2017-07-19 21 views
2

如下表與客戶,類別,產品,日期和價值,如何保持單打值一列與SQL具有一定的領域結合

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 | 

我怎樣才能填補「單值」列,只保留某個鍵的組合(如Customer,Category,Date)的唯一值?

由於提前

+2

您好,歡迎來SO。我們需要一些細節來提供答案。你發佈的內容非常不清楚。這裏是一個開始的好地方。 http://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/ –

+1

如果單個值列對此分組具有多於1個唯一值,該怎麼辦?你會選擇哪一個? – scsimon

+0

因此,對於「客戶」,「類別」和「日期」的每個獨特組合,您想要一個值?如果您有兩行共享相同的客戶,類別和日期,應顯示哪個單一值?你能發佈你的預期輸出嗎? – EMUEVIL

回答

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 
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 
相關問題