2017-06-21 53 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