2017-06-21 52 views
-2

我有一個數據庫,其中有n個產品,m個單位在不同日期出售。 袋類銷售每天的基礎上,一些日子5幾天6等sql唯一映射列

示例數據庫:

+---------+----------+-------+ 
| Product | UnitSold | Date | 
+---------+----------+-------+ 
| bag  |  1 | 1 jun | 
| wallet |  2 | 2 jun | 
| purse |  3 | 3 jun | 
| bag  |  4 | 4 jun | 
| shoes |  3 | 4 jun | 
| Shirt |  2 | 1 jun | 
| bag  |  5 | 2 jun | 
| shirt |  6 | 3 jun | 
| Purse |  1 | 1 jun | 
+---------+----------+-------+ 

我想要的結果的一個獨特的組合,其中一個產品的特定數量的特定日期出售。我怎樣才能做到這一點? 例子我要找:

結果:

+---------+----------+-------+ 
| Product | UnitSold | Date | 
+---------+----------+-------+ 
| bag  |  1 | 1 jun | 
| purse |  3 | 3 jun | 
| shirt |  6 | 3 jun | 
+---------+----------+-------+ 

想 列的具體映射我怎樣才能做到這一點?我正在使用Microsoft sql server 2008

+0

編輯您的問題,並以表格格式提供樣品數據和所需結果。 –

+0

我編輯過。請建議 – Rolee

回答

0

如果你不關心你真正想要的結果,你可以輸入排名或行號。

我把你的數據放到一個臨時表中並運行下面的代碼。它會給每個產品一個結果。有了排名,它會根據售出的單位給我1號。如果需要,可以根據日期或其他任何方式更改。

select * 
from (
select *,rank() over(partition by product order by unitsold) as rnk 
from #temp a 
)final 
where rnk = 1 

product unitsold Date rnk 
bag  1  2017-06-01 1 
purse 3  2017-06-02 1 
shirt 2  2017-06-02 1 
shoes 3  2017-06-04 1 
wallet 2  2017-06-02 1