CASE WHEN a.存货分类 LIKE '%物料' THEN b.品牌 IN ('促销物料') ELSE '其他分类' END 报错 b.品牌 in ('促销物料')
时间: 2023-09-03 19:10:05 浏览: 63
如果报错提示是 `b.品牌 in ('促销物料')`,那么可能是因为 `b.品牌` 不是一个布尔类型的字段,无法直接使用在 `CASE WHEN` 语句的返回值中。
你可以尝试将 `b.品牌 IN ('促销物料')` 改为一个字符串类型的值,例如:
```
CASE WHEN a.存货分类 LIKE '%物料' THEN
(CASE WHEN b.品牌 IN ('促销物料') THEN '是' ELSE '否' END)
ELSE '其他分类'
END
```
这样,当 `a.存货分类` 包含 '%物料' 时,如果 `b.品牌` 在 ('促销物料') 中,则返回值为 '是',否则返回值为 '否';当 `a.存货分类` 不包含 '%物料' 时,返回值为 '其他分类'。
相关问题
case when a.存货分类 like '%物料' then b.品牌 in('促销物料') else a.存货分类 end 这样写成立吗
根据你提供的 SQL 代码,我看到你在使用 CASE WHEN 语句对存货分类进行条件判断,并根据不同的条件返回不同的值。根据你提供的信息,这个语句的语法是正确的,但是需要根据具体的数据和业务逻辑进行验证。具体来说,你需要检查以下几点:
1. 存货分类字段是否包含值为 '%物料' 的记录;
2. 品牌字段是否包含值为 '促销物料' 的记录;
3. 当存货分类字段包含 '%物料' 时,品牌字段是否为 '促销物料';
4. 当存货分类字段不包含 '%物料' 时,是否返回正确的存货分类值。
只有在以上几点都满足的情况下,才能确定这个查询语句是否正确。
CASE WHEN a.存货分类 LIKE '%物料' THEN b.品牌 IN ('促销物料') ELSE '其他分类' END b.品牌 in
CASE WHEN a.存货分类 LIKE '%物料' THEN b.品牌 IN ('促销物料') ELSE '其他分类' END 这条 SQL 语句中,b.品牌 IN ('促销物料') 是作为 THEN 分支的返回值,表示当 a.存货分类 LIKE '%物料' 时,如果 b.品牌在 ('促销物料') 中,则返回值为 TRUE,否则返回值为 FALSE。
而 ELSE 分支的返回值是 '其他分类',即当 a.存货分类不满足 LIKE '%物料' 的条件时,返回值都为 '其他分类'。
因此,b.品牌 IN ('促销物料') 不是作为一个独立的条件,而是作为 CASE WHEN 语句的返回值之一。
阅读全文