我在雪花上有一张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 只返回一个值吗?