在分组依据中创建升序ID

时间:2020-07-13 17:34:56

标签: sql-server group-by

我有这张桌子

+-----------+-------------+
| FoodType  |    Food     |
+-----------+-------------+
| Fruits    | Apple       |
| Fruits    | Orange      |
| Meat      | Beef        |
| Meat      | Chicken     |
| Meat      | Pork        |
| Vegetable | Cauliflower |
| Vegetable | Leek        |
+-----------+-------------+

我要如何创建一个新列(GroupID)来为FoodType按特定顺序(例如,按FoodTypeFood进行分组的数据生成唯一的ID:

+-----------+-------------+---------+
| FoodType  |    Food     | GroupID |
+-----------+-------------+---------+
| Fruits    | Apple       |       1 |
| Fruits    | Orange      |       2 |
| Meat      | Beef        |       1 |
| Meat      | Chicken     |       2 |
| Meat      | Pork        |       3 |
| Vegetable | Cauliflower |       1 |
| Vegetable | Leek        |       2 |
+-----------+-------------+---------+

我有一个简单的查询:

SELECT  FoodType, Food
FROM    Food
GROUP BY FoodType, Food

但我不知道如何生成ID ...

1 个答案:

答案 0 :(得分:2)

您需要将ROW_NUMBER()与相应的PARTITION BYORDER BY子句一起使用:

SELECT FoodType, Food, ROW_NUMBER() OVER (PARTITION BY FoodType ORDER BY Food)
FROM Food