不修改源表的SQL查询中实现拖车分类命名
问题分析与解决
你的SQL语句错误在于语法逻辑:Trailer IN ('123456', '45678','98765')返回的是布尔值(真或假),不能直接和字符串'Stretch'做相等判断,这是SQL语法不允许的。
要实现把指定拖车编号归类为'Stretch Trailers'的需求,用CASE表达式是最直接的方案,分两种常见场景:
场景1:查询时新增分类字段
如果需要在结果里给特定拖车打上分类标签,同时保留其他拖车的原有分类(或标记为其他),可以这么写:
SELECT Trailer, CASE WHEN Trailer IN ('12345', '45678', '98765') THEN 'Stretch Trailers' -- 替换成你源表中的分类字段名;如果没有原有分类,可改为'Other'或留空 ELSE COALESCE(原分类字段名, 'Other') END AS TrailerCategory FROM 你的源表名称;
场景2:仅筛选特定拖车并统一标记分类
如果只需要查询这些指定拖车,同时给它们统一分配分类:
SELECT Trailer, 'Stretch Trailers' AS TrailerCategory FROM 你的源表名称 WHERE Trailer IN ('12345', '45678', '98765');
另外注意:你示例代码里写的拖车编号是123456,但需求描述里是12345,这个笔误会导致匹配失败,记得修正编号。
内容的提问来源于stack exchange,提问作者brady12
相关产品推荐
相关产品推荐

