Как добавить столбец и присвоить значения в SQL

#sql #sql-server

#sql #sql-сервер

Вопрос:

У меня есть таблица со столбцами name и category :

Имя Категория
A Высокая
b Средний
c Низкий

Я хотел бы добавить в него еще один столбец и присвоить значения категории с помощью SQL

Желаемый результат:

Имя Категория V_Cat
A Высокая 1
B Средний 2
C Низкий 3

Я в основном привык к python, а не к SQL какой-либо подсказки? Я использую SQL Server.

Спасибо

Комментарии:

1. ALTER TABLE [TableX] ADD COLUMN [V_Cat] int NOT NULL DEFAULT 0 .

2. Как настроить High = 1 Medium = 2 и Low = 3? в V_cat

3. @sarah похоже, вам нужна отдельная категория таблицы, которая содержит имена категорий и их значения, и в вашей первой таблице добавьте внешний ключ к вашей категории FK_category

Ответ №1:

Одним из простых методов является вычисляемый столбец:

 ALTER TABLE TableX ADD V_Cat AS
    (CASE Category WHEN 'High' THEN 1 WHEN 'Medium' THEN 2 WHEN 'Low' THEN 1 END);
 

Обратите внимание, что вы также можете просто использовать CASE выражение в SELECT запросе.

Однако, если вы хотите, чтобы они использовались в разных таблицах и были гибкими (чтобы вы могли добавлять дополнительные категории), я бы рекомендовал справочную таблицу. То есть сохраните только v_cat столбец в своей таблице и создайте другую таблицу со строками, которые они означают.

Ответ №2:

Используйте этот код для ALTER TableX :

 ALTER TABLE [TableX] ADD [V_Cat] INT NOT NULL DEFAULT 0;
 

И для присвоения значений, если у вас одинаковый порядок значений по имени, вы можете использовать этот пример:

 SELECT [Name], ROW_NUMBER() OVER(ORDER BY [Name]) AS RowNo 
INTO #t_res
FROM TableX;

UPDATE X 
SET X.V_Cat = t.RowNo
FROM TableX AS X
JOIN #t_res AS t ON t.[Name] = X.[Name];
 

Это будет работать для большего количества неограниченных записей, которые имеют одинаковый порядок по имени.