【问题标题】:Updating a Field based on Values in Two Other Fields根据其他两个字段中的值更新字段
【发布时间】:2009-10-14 18:18:08
【问题描述】:

我有一个包含字段 RACE、ETHNICITY 和 ETH 的数据库表。我需要评估 RACE 和 ETHNICITY 字段并使用一系列案例填充 ETH: 如果 Race = W 和 Ethncity = 1 那么 ETH = Caucasian 等等。

有人可以建议我构造存储过程以实现此目的的最佳方法吗?

【问题讨论】:

    标签: sql sql-server sql-server-2005 tsql stored-procedures


    【解决方案1】:

    我会在你的更新中做一个 CASE 声明:

    UPDATE yourtable
       SET Eth = CASE
                   WHEN Race = 'W' AND Ethnicity = 1 THEN 'Caucasian'
                   WHEN Race = 'B' AND Ethnicity = 2 THEN 'African-American'
                   WHEN Race = 'H' THEN 'Hispanic' --Ethnicity is irrelevant
                   ...whatever other pairs of conditions you want...
                 END
     FROM yourtable
    

    在这种情况下,您可以在 case 语句的每一行设置任何您想要的条件。在某些行中,您可以执行两个条件(如前两行),而在其他行中,您可以执行一个(如第三行)。

    【讨论】:

      【解决方案2】:

      规范化您的数据,创建一个新表,在 Race+Ethnicity 上使用复合主键:

      你的新表

      Race       CHAR(1)     PK
      Ethnicity  CHAR(1)     PK
      ETH        VARCHAR(50)
      

      为你的另一个表创建一个外键,并加入以显示 ETH:

      SELECT
          o.Race
             ,o.ETHNICITY  
             ,n.ETH
          FROM YourTable               o
              INNER JOIN YourNewTable  n ON o.Race=n.Race AND o.Ethnicity=n.Ethnicity
      

      【讨论】:

      • +1,使用表格而不是一系列案例陈述。
      猜你喜欢
      • 2023-03-30
      • 1970-01-01
      • 1970-01-01
      • 2012-05-11
      • 2020-09-04
      • 1970-01-01
      • 2019-07-13
      • 2011-01-20
      • 2019-07-20
      相关资源
      最近更新 更多