sql唯一的列映射

时间:2017-06-21 11:03:43

标签: sql sql-server

我有一个数据库,其中有n个产品,m个单位在不同的日期出售。 袋子每天出售,有些日子是5天,有些日子等等。

示例数据库:

file

我想要一个独特的结果组合,在特定日期销售特定数量的产品。我怎样才能做到这一点? 我正在寻找的例子:

结果:

+---------+----------+-------+
| 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 |
+---------+----------+-------+

想要列的特定映射 我怎样才能做到这一点 ?我正在使用Microsoft sql server 2008

1 个答案:

答案 0 :(得分: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