我有这张桌子
+-----------+-------------+
| FoodType | Food |
+-----------+-------------+
| Fruits | Apple |
| Fruits | Orange |
| Meat | Beef |
| Meat | Chicken |
| Meat | Pork |
| Vegetable | Cauliflower |
| Vegetable | Leek |
+-----------+-------------+
我要如何创建一个新列(GroupID
)来为FoodType按特定顺序(例如,按FoodType
和Food
进行分组的数据生成唯一的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 ...
答案 0 :(得分:2)
您需要将ROW_NUMBER()
与相应的PARTITION BY
和ORDER BY
子句一起使用:
SELECT FoodType, Food, ROW_NUMBER() OVER (PARTITION BY FoodType ORDER BY Food)
FROM Food