snowflake-sql - 我可以在 CASE WHEN THEN 子句下使用 'OR' 语句吗?
问题描述
我在雪花上有一张my_table表:
公司 | 交易 |
---|---|
美国人 | 321-美国鹰 123 |
耐克 | 080* 耐克_74093 |
美国人 | 00 美洲鹰_42 |
阿迪达斯 | 0101阿迪达斯**093 |
美国人 | 987 美国航空公司_4 |
美国人 | 17 美国运通 02 |
美国人 | 09 美国-EAGLE_42 |
美国人 | 0* 美国航空公司 **7 |
美国人 | 101美国运通*9 |
可口可乐 | 98*可口可乐__4237 |
COMPANY 栏是公司的简称(基本上是公司名称的第一个字)。
TRANSACTIONS 列是我的数据集中显示的交易名称。由于处理方式不同,每个交易名称中都会有一些前缀和后缀。
对于Company列值“American”, Transactions列中可能对应有“American Eagle”、“American Airline”、“American Express”等。
如果我只想保留来自American Eagle交易的行,而 Company 列的值为“ American ”与所有其他公司的交易,我该怎么办?
我正在寻找的结果表:
公司 | 交易 |
---|---|
美国人 | 321-美国鹰 123 |
耐克 | 080* 耐克_74093 |
美国人 | 00 美洲鹰_42 |
阿迪达斯 | 0101阿迪达斯**093 |
美国人 | 09 美国-EAGLE_42 |
可口可乐 | 98*可口可乐__4237 |
下面是我试图解决问题的 SQL 查询,我在这里遇到的挑战甚至是 American Eagle,Transactions 列的值可能类似于"AMERICAN EAGLE"(中间有空格) 、"AMERICANEAGLE"(没有空格)、"AMERICAN -EAGLE"(中间的连字符)等。因此,我尝试在我的 SQL 查询中使用 CASE WHEN ... THEN (...OR...) 语句。但是,以下查询不起作用并弹出错误。
SELECT *
FROM my_table
WHERE
transactions LIKE CONCAT('%',
CASE WHEN company = 'AMERICAN' THEN ('AMERICAN EAGLE' OR 'AMERICANEAGLE' OR 'AMERICAN-EAGLE')
ELSE company END, '%')
我可以在“THEN”子句下使用“OR”语句,因为 CASE WHEN THEN 只返回一个值吗?
解决方案
我会以正常的 OR 条件分别处理“AMERICAN”公司,包括您拥有的三个案例,然后是所有其他公司:
with my_table as (
select 'AMERICAN' as COMPANY, '321-AMERICAN EAGLE 123' as TRANSACTIONS
union all select 'NIKE', '080* NIKE_74093'
union all select 'AMERICAN', '00 AMERICANEAGLE_42'
union all select 'ADIDAS', '0101ADIDAS **093'
union all select 'AMERICAN', '987 AMERICAN AIRLINE_4'
union all select 'AMERICAN', '17 AMERICAN-EXPRESS 02'
union all select 'AMERICAN', '09 AMERICAN-EAGLE_42'
union all select 'AMERICAN', '0* AMERICANAIRLINE **7'
union all select 'AMERICAN', '101AMERICAN EXPRESS *9'
union all select 'COCA', '98*COCA COLA __4237'
)
select *
from my_table
where ( ( company = 'AMERICAN' and (transactions like '%AMERICAN EAGLE%'
or transactions like '%AMERICANEAGLE%'
or transactions like '%AMERICAN-EAGLE%')
)
OR company <> 'AMERICAN'
);
推荐阅读
- xcode - 将项目的 Distribution p12 证书文件发布到公共 Github
- php - 从 category-slug 页面链接到自定义帖子存档
- ios - ios深度链接中避免“Safari无法打开页面,因为地址无效”
- plsql - 创建多线程的过程
- amazon-cloudwatch - 让 Cloudtrail Cloudwatch 事件正常工作
- java - Head First Java p.139 Battleships ArrayList<> 问题
- javascript - 重新加载具有 queryParams 路由的页面时,角度路由事件周期运行两次
- linux - linux - 在 /etc/asound.conf 中结合多个插件的 ALSA 配置
- javascript - 如何遍历对象并检查它是否具有另一个对象作为名称为“test__c”的属性
- r - Rmarkdown中R块后缩进的项目符号