【问题标题】:Modifying a column value depending on other column value for all the rows根据所有行的其他列值修改列值
【发布时间】:2012-10-19 15:50:33
【问题描述】:

我有一个 teradata 表。现在我需要添加一个列,比如说,标志并将值插入到标志列中,这将取决于比如说,销售。如果销售额大于 x 或 Flag=0,则 Flag=1。 这是目前Table的结构

Sales    Date 
 10    11/11/1987
 20    12/13/1987

我想要这样的方式

Sale    Date       Flag
 10   11/11/1987    0
 20   12/13/1987    1

我试图在论坛上寻找此类问题,但找不到任何问题。如果您发现任何重复的问题,请原谅。

【问题讨论】:

    标签: sql teradata


    【解决方案1】:

    你想在这里使用的是CASE 声明:

    UPDATE teradata_table
    SET flag = CASE WHEN sales > 10 THEN 1 ELSE 0 END;
    

    【讨论】:

      【解决方案2】:

      添加列后,做更新语句

      Update <table>
      set Flag = case when Sale<=10 then 0 
                      else 1
                 end
      

      【讨论】:

      • 哦,快。比我快 42 秒。
      【解决方案3】:
      ALTER TABLE MYTABLE
      ( FLAG NUMBER(1) );
      
      UPDATE MYTABLE SET FLAG = 1 WHERE SALE >= 10;
      

      【讨论】:

      • 假设当销售额为偶数时,我想要类似 Flag=1 的东西,否则为 Flag=0。我可以通过运行两个更新语句来做到这一点。不能在一个语句中完成吗?在这种情况下 case-when 有用吗?
      • 偶数和奇数只是一个例子。根据我的销售额、数量(我认为在此处指定的列并不重要),我可能会被安排处理不同类型的案例。我只需要一个通用的方法。
      • Case .. 处理这种情况的最佳方式是什么时候。
      猜你喜欢
      • 2022-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-27
      • 1970-01-01
      • 2023-02-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多