sql - 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
解决方案
通常,一个 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 以匹配其他输出。
推荐阅读
- arrays - 如何替换字符串中的匹配字符?(红宝石)
- android - 如何最好地部署 Android 应用程序并允许更新
- javascript - 如何记录来自 fetch api 的响应
- java - 如何检查字符是否来自特定的字符集
- scala - 使用 H2 数据库时 Quill 中插入或更新操作的编译错误
- javascript - 检查字符串是否仅包含表情符号 - Javascript
- mysql - innodb 梭子鱼文件格式与希捷的关系
- javascript - 如何将 vue 数据绑定添加到动态创建的元素
- python - python 一个附加到三个线程的目标函数
- spring-webflux - 如何使用 Flux 逐个发送数据?