首页 > 解决方案 > SQL - 如果运行日期在特定日期之后,则显示 N/A

问题描述

这是我第一次发帖。当我选择让查询运行的日期在特定日期之后时,我试图显示“N/A”,否则我确实想要一个计算出来的数字,但我一直收到错误消息。有人可以帮我弄这个吗?

                CASE When a.run_date > a.street_day
                        THEN convert(varchar(10),pre_order_forecast) as pre_order_forecast 
                        pre_order_forecast = 'N/A'
                ELSE (CASE
                      WHEN datediff(DAY, fcst.forecast_creation_day, NVL(a.street_day)) BETWEEN 0 AND 7
                          THEN fcst_qty_wk0
                      END) 
          
                END AS pre_order_forecast

标签: sqlstring

解决方案


通常,一个 CASE 表达式是沿着

> CASE
>    WHEN condition test 1 THEN value/calculation
>    WHEN condition test 2 THEN value/calculation
>    ...
>    ELSE value/calculation END

它依次通过 WHEN 条件测试,直到一个为真;然后使用该值/计算(就像一系列 IF THEN ELSE 表达式)。

快速编写这些成为 imo 的第二天性,但要开始,您可以

  • 从写作开始CASE
  • 在下一行,写WHEN,一些空格,然后THEN
  • 在WHEN之后填入检查是否为真的东西,如果在THEN之后为真会是什么结果
  • 重复下一行等
  • 当没有任何检查为真时添加“ELSE”。

在你的情况下,我猜你想要类似的东西

CASE WHEN a.run_date > a.street_day
         THEN convert(varchar(10),pre_order_forecast) 
     WHEN datediff(DAY, fcst.forecast_creation_day, NVL(a.street_day)) BETWEEN 0 AND 7
         THEN fcst_qty_wk0
     ELSE 'N/A'
     END AS pre_order_forecast

确切的语法和字段取决于您的数据库。

请注意,在第二个 WHEN 中,您可能还需要转换fcst_qty_wk0为 varchar 以匹配其他输出。


推荐阅读