如何在SELECT语句中用SQL CASE选择active状态的drive数据?
SQL CASE 语句完整写法指导
完整可运行的SQL代码
SELECT t_stamp AS DateTime, CASE WHEN DriveAActive THEN DriveA_TorqueActual ELSE DriveB_TorqueActual END AS Actual_Torque -- 给计算列指定别名,让结果列名更清晰 FROM your_table_name; -- 替换为你的实际表名
关键写法说明
- 你的代码片段缺少CASE语句的闭合关键字
END,这是SQL CASE表达式的必填部分,用来标记条件判断逻辑的结束。 - 给CASE表达式的结果列加别名(比如示例中的
Actual_Torque)是良好习惯,既方便后续引用该列,也让查询结果可读性更强。 - 当前逻辑完全匹配你的需求:当
DriveAActive处于active状态(值为真)时,返回Drive A的扭矩数据;否则直接返回Drive B的扭矩数据。
特殊场景扩展处理
如果存在DriveA和DriveB同时active或两者都不active的情况,可以按需调整逻辑:
SELECT t_stamp AS DateTime, CASE WHEN DriveAActive THEN DriveA_TorqueActual WHEN DriveBActive THEN DriveB_TorqueActual ELSE NULL -- 也可以指定默认值,比如0或'无有效数据' END AS Actual_Torque FROM your_table_name;
基础语法参考
SQL CASE表达式分为两种常用形式:
- 搜索式CASE(你使用的类型):
CASE WHEN 条件1 THEN 结果1 WHEN 条件2 THEN 结果2 ELSE 默认结果 END,支持复杂的多条件判断; - 简单式CASE:
CASE 目标列 WHEN 匹配值1 THEN 结果1 WHEN 匹配值2 THEN 结果2 ELSE 默认结果 END,适合针对单一列的等值判断。
所有主流SQL数据库(MySQL、PostgreSQL、SQL Server等)均支持标准CASE表达式语法。
内容的提问来源于stack exchange,提问作者Chris Brunner
相关产品推荐
相关产品推荐

