在重复记录中需要一条记录

时间:2017-02-24 10:07:56

标签: sql hana-studio

这是表格:

活动表

|Place of order|Order NR  | Nr of activity|type of activity| Date of activity|
|01            |1         | 00001         |      1         | Date1           |
|01            |1         | 00002         |      1         | Date1           |
|01            |1         | 00003         |      2         | Date2           |
|02            |1         | 00001         |      1         | Date9           |
|01            |2         | 00001         |      1         | Date4           |
|01            |2         | 00003         |      2         | Date5           |
|01            |2         | 00002         |      3         | Date3           |
|02            |2         | 00001         |      1         | Date10          |
|02            |2         | 00006         |      2         | Date11          |
|02            |2         | 00018         |      2         | Date11          |
|02            |1         | 00002         |      2         | Date1           |

订单地点和订单号必须在一起才能保持唯一性, Activity Type 1 is order placed;Activity Type 2 is order dispatched 还有其他活动在这种情况下不感兴趣。

出现错误(不知道是怎么回事)。对于少数订单(订单地点和订单编号),同一订单已在同一天下达并放置两次,但它具有不同的活动nr。

我正在尝试为每个订单获取活动类型1和类型2的日期以及订单和订单的位置。

结果应如下所示:

对于已下订单:

|Place of order|Order NR  | Nr of activity|type of activity| Date of activity|
|01            |1         | 00001         |      1         | Date1           |
|02            |1         | 00001         |      1         | Date9           |
|01            |2         | 00001         |      1         | Date4           |
|02            |2         | 00001         |      1         | Date10          |

对于订单卸货:

|Place of order|Order NR  | Nr of activity|type of activity| Date of activity|
|01            |1         | 00003         |      2         | Date2           |
|02            |1         | 00002         |      2         | Date12          |
|01            |2         | 00002         |      2         | Date5           |
|02            |2         | 00006         |      2         | Date11          |

我无法弄清楚如何从结果中排除重复项。这意味着我只需要一行(活动编号最小的行)。

1 个答案:

答案 0 :(得分:1)

请试试这个:

  ;with cte as(
    select rank() over(order by [Nr of activity] ) as rid , * from TableName
    ) select * from cte where rid=1