Создать возрастающий идентификатор в группе по - PullRequest
0 голосов
/ 13 июля 2020

У меня есть эта таблица

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

Как мне создать новый столбец (GroupID), который генерирует уникальный идентификатор для данных, сгруппированных по FoodType в специальном порядке c (например, упорядочено по FoodType и Food:

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

, но я не знаю, как сгенерировать идентификатор ...

1 Ответ

2 голосов
/ 13 июля 2020

Необходимо использовать ROW_NUMBER() с соответствующими предложениями PARTITION BY и ORDER BY:

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