【问题标题】:SQL - replace a NULL value with a calculated valueSQL - 用计算值替换 NULL 值
【发布时间】:2021-10-24 00:48:01
【问题描述】:

我的查询显示股票代码、我为股票设定的价格目标和开盘价。 如果我的 price_target 列具有 NULL 值,我想用计算值替换它。 开盘时增加 10%。

例如:第 3 行,股票代码 = ARCB。 price_target 具有 NULL 值。 open 是 43.7,所以 NULL 应该换成 48.07。

我假设我应该使用 CASE 表达式: (case WHEN price_target IS NULL THEN ((open * 0.1) + OPEN) END)

但是,这会创建一个新列:

如何只替换 price_target 列中的 NULL 值?

【问题讨论】:

  • 您可以在CASE WHEN 语句中添加ELSE price_target 并从SELECT 中删除price_target

标签: sql stock portfolio


【解决方案1】:

您可以在这里简单地使用coalesce

select ticker, 
  Coalesce(price_target, open * 1.1),
  open
from rating_open

还要加 10%,乘以 1.1。

【讨论】:

    【解决方案2】:

    像这样:

    SELECT ticker, 
        case WHEN price_target IS NULL THEN ((open * 0.1) + open) else price_target 
        END as price_target, 
        open 
    FROM rating_open 
    

    【讨论】:

      【解决方案3】:

      从 SELECT 语句中取出,将 case 子句放在 WHERE 语句之后

      您在 SELECT 子句中输入的任何内容都将显示为一列

      【讨论】:

      • 像这样:SELECT ticker, price_target, open FROM rating_open (case WHEN price_target IS NULL THEN ((open * 0.1) + open) END)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-03
      • 2021-04-04
      • 1970-01-01
      • 1970-01-01
      • 2021-06-21
      相关资源
      最近更新 更多