【问题标题】:How to add column and assigning values in SQL如何在 SQL 中添加列和赋值
【发布时间】:2021-01-10 10:01:24
【问题描述】:

我有一个表格,其中包含 namecategory 列:

Name Category
A High
b Medium
c Low

我想在其中添加另一列并使用 SQL 为类别分配值

想要的结果:

Name Category V_Cat
A High 1
B Medium 2
C Low 3

我主要习惯于 python 而不是 SQL 任何线索?我正在使用 SQL Server。

谢谢

【问题讨论】:

  • ALTER TABLE [TableX] ADD COLUMN [V_Cat] int NOT NULL DEFAULT 0.
  • 谢谢你以及如何分配 High = 1 Medium = 2 和 Low = 3 ?在V_cat中
  • @sarah 看起来您需要一个单独的表类别来保存类别名称及其值,并在您的第一个表中为您的类别 FK_category 添加一个外键

标签: sql sql-server


【解决方案1】:

一种简单的方法是计算列

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

请注意,您也可以在 SELECT 查询中简单地使用 CASE 表达式。

但是,如果您希望这些在不同的表格中使用并且灵活(以便您可以添加其他类别),那么我建议您使用 reference 表格。也就是说,只将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];
    

    它适用于名称相同的更多无限记录。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-26
      • 1970-01-01
      • 2023-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-20
      • 2020-02-29
      相关资源
      最近更新 更多