sql-server - SQL Server 复杂的 CASE 语句(先检查某个字段的值,然后选择 CASE stmt used)
问题描述
在我知道需要以哪种方式准备 CASE 语句之前,我将如何编写一个需要先检查字段值的 CASE 语句?我把它写成下面的 IF:
select *,
IF schedule_at is not NULL THEN CASE
when actual_start < schedule_at THEN 'Early'
else 'Late'
END as Delivery,
ELSE
case
when actual_start between schedule_from and schedule_to THEN 'On Time'
when datediff(minute,actual_start,schedule_from) < 0 THEN 'Late'
else 'Early'
END as Delivery,
END
from some_dates_table
解决方案
嗨,如果我明白你想要这个查询应该是什么工作:
select *,
Case when schedule_at is not NULL THEN (CASE
when actual_start < schedule_at THEN 'Early'
else 'Late'
END)
ELSE
(case
when actual_start between schedule_from and schedule_to THEN 'On Time'
when datediff(minute,actual_start,schedule_from) < 0 THEN 'Late'
else 'Early'
END) END as Delivery
from some_dates_table
推荐阅读
- javascript - 为什么我的 Async 函数只有在我更改调用函数语法时才能正常工作?
- excel - getFileAsync 导致 Excel 崩溃
- javascript - rick & morty api 问题,请求带有 id 的字符
- javascript - 当我在 Angular 应用程序中调用 .next() 一次时,主题订阅被触发两次
- javascript - 如何在 JavaScript 中获取用户信息?
- scala - Spark Df 检查基于上一列的列值
- python-3.x - 如何定义一个函数包含另一个函数?
- sql-server - 如何在 SQL Server 中生成使用其前任值计算的列
- javascript - 如何生成一个可以被另一个随机生成的数字整除的随机数
- php - Symfony 4如何上传有关oneToMany的多个图像?