粘贴下面是使用在where子句中,但它抛出一个语法错误,说:“期待一个关键字像mrktng_pckge_typ_cd和NOT关键字之间END case语句的样本SQL代码CASE语句:Teradata的
CASE WHEN exc_ind=1 THEN mrktng_pckge_typ_cd NOT IN ('a','b','c','d') ELSE NULL END
。
粘贴下面是使用在where子句中,但它抛出一个语法错误,说:“期待一个关键字像mrktng_pckge_typ_cd和NOT关键字之间END case语句的样本SQL代码CASE语句:Teradata的
CASE WHEN exc_ind=1 THEN mrktng_pckge_typ_cd NOT IN ('a','b','c','d') ELSE NULL END
。
您可能需要做这样我已经给不同的表名,但你可以做这样的逻辑:
Declare @condition as int = 1
SELECT *
FROM mstCity
WHERE(([email protected] and Name IN (SELECT AliasCity.Name From mstCity AliasCity WHERE AliasCity.Name NOT IN ('USA','UK'))) OR
([email protected] AND Name IN (SELECT AliasCity.Name From mstCity AliasCity ))
)
更新的答案,按您的查询应该是象下面这样:
WHERE ((exc_ind= 1 AND mrktng_pckge_typ_cd NOT IN ('a','b','c','d')) OR
(exc_ind <> 1 AND 1=1)
)
谢谢你的答案Snehal但这段代码进入SQL宏,所以我不能在这里使用这个变量逻辑。其他解决方案? –
你不需要用变量逻辑作为例子。在你的情况下,你必须在第一个条件中使用exc_ind = 1,在第二个条件中你必须写exc_ind <> 1 – Snehal
向下投票(1)用SQL Server代码回答Teradata问题(2)给出完全不相关的代码作为参考3)“AND 1 = 1”。当真? –
where exc_ind <> 1
or mrktng_pckge_typ_cd NOT IN ('a','b','c','d')
如果exc_ind可以为空 -
where coalesce (exc_ind,-1) <> 1
or mrktng_pckge_typ_cd NOT IN ('a','b','c','d')
出于演示的目的:
where case when coalesce (exc_ind,-1) <> 1 or mrktng_pckge_typ_cd NOT IN ('a','b','c','d') then 1 else 0 end = 1
我需要第一个。情景是这样的,如果指标等于一个我不应该获取类型代码提到的值,如果指标不等于一个我需要所有的数据。这个检查应该发生在where子句。 –
为了扩大优秀的答案,你不能把'case'和'where in'结合起来。你不得不使用动态sql,我不认为哪些宏不支持。所以你必须使用这个'或'逻辑。 – Andrew
@Andrew,看到我更新的答案, –
不知道你尝试什么来实现的,但我认为你再阻止你应该设置一个值。您的声明没有设置任何值。 –