【发布时间】:2018-05-07 10:33:05
【问题描述】:
我可能试错了。我正在寻找任何最好的方法。
要求:
我的查询基于几个字段连接 4-5 个表。
我有一个名为产品 ID 的列。在我的表中有 150 万行。在这 10% 的行中,产品 ID 具有以下属性
A300X-%
A500Y-%
300,500、700 是有效的型号。 X 和 Y 是分类。我的查询选择了所有系统。
我有一张支票如下
CASE
WHEN PID LIKE 'A300X%'
THEN 'A300'
...
END AS MODEL
同样
CASE
WHEN PID LIKE 'A300X%'
THEN 'X'
...
END AS GENRE
我正在寻找下面的最佳选择
- 如何结合这两个 case 语句并添加另一个 [第三个] 案例,该案例将包含这两个案例。即
CASE WHEN desc in ('AAA') First Case Second Case ELSE don't do anything for other systems END
是否有任何正则表达式方法可以做到这一点?先于 - 取字符串。寻找 X、Y 以及 300,500,700。
还有其他方法吗?还是通过代码做是最好的方式?
有什么建议吗?
编辑:
示例说明:
AAA,
SoftwARE,
sw-app
我的查询选择了所有的 desc。但是这个案子应该只针对 AAA。
而有效的模型是
A300X-2x-P
A500Y-5x-p
A700X-2x-p
A50CE-2x-P
我只需要考虑 300,500,700。以及以上两种情况。
预期结果:
MODEL GENRE
A300 X
A500 Y
A300 Y
【问题讨论】:
-
请显示更多示例数据。如果您需要在这两个
CASE表达式中使用别名的两列,那么不清楚为什么您只需要一个列。 -
您是否知道(我猜您知道,但不得不问)
%用作通配符,这意味着123abcdefg%和123456789dfdgffdg都将匹配123%(与like)。 -
@TimBiegeleisen 我添加了更多数据。请检查。
-
@Gops AB:不,Tim 说的是,我们不明白你如何从
case when一次返回两件东西。因此,请显示预期结果,即不仅是字符串列表,还包括结果应包含的列。会有模型栏吗?会有流派专栏吗?会有另一列以某种方式组合这些吗?请出示。 -
@ThorstenKettner 我添加了预期的输出列。请检查并让我知道。是的,会有一个模型栏和一个流派栏。没有合并的列。