teradata SQL 带有 where 子句的 case 语句或此的替代语句
teradata SQL case statement with where clause or an alternative to this
我想在 where 子句中执行特定任务,前提是来源像 "GOLD%" 然后 SOURCE_SUB_CATEGORY 像任何 ('WHITE%','YELLOW%').
SELECT t1,t2, t3 from table where <other conditions> and case when SOURCE="GOLD%" then SOURCE_SUB_CATEGORY like any ('WHITE%','YELLOW%') end group by 1,2,3.
这是抛出错误 -“语法错误,在单词 'SOURCE_SUB_CATEGORY' 和
'like' 关键字”。
因此,我所寻找的只是仅当源是黄金时才执行,然后仅当 source_sub_category 类似于任何 white% 或 Yellow% 时才执行 select 的额外 where 条件。我想我不应该在这里使用 case 语句我也准备使用任何替代方法来执行此任务。
所以,首先,SOURCE="GOLD%"
不是 valid.You 想要 SOURCE LIKE 'GOLD%'
。
为了处理你的 where 语句,我会使用类似的东西:
where...
and (
(SOURCE LIKE 'GOLD%' and sub_source_category like any('WHITE%','YELLOW%'))
OR SOURCE NOT LIKE 'GOLD%')
我想在 where 子句中执行特定任务,前提是来源像 "GOLD%" 然后 SOURCE_SUB_CATEGORY 像任何 ('WHITE%','YELLOW%').
SELECT t1,t2, t3 from table where <other conditions> and case when SOURCE="GOLD%" then SOURCE_SUB_CATEGORY like any ('WHITE%','YELLOW%') end group by 1,2,3.
这是抛出错误 -“语法错误,在单词 'SOURCE_SUB_CATEGORY' 和 'like' 关键字”。 因此,我所寻找的只是仅当源是黄金时才执行,然后仅当 source_sub_category 类似于任何 white% 或 Yellow% 时才执行 select 的额外 where 条件。我想我不应该在这里使用 case 语句我也准备使用任何替代方法来执行此任务。
所以,首先,SOURCE="GOLD%"
不是 valid.You 想要 SOURCE LIKE 'GOLD%'
。
为了处理你的 where 语句,我会使用类似的东西:
where...
and (
(SOURCE LIKE 'GOLD%' and sub_source_category like any('WHITE%','YELLOW%'))
OR SOURCE NOT LIKE 'GOLD%')