首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Redshift SQL Case语句和WHERE子句不起作用

Redshift SQL Case语句和WHERE子句不起作用
EN

Stack Overflow用户
提问于 2016-03-11 06:44:26
回答 2查看 11.1K关注 0票数 0

我正在运行以下SQL脚本来创建一个表,其中包含有关哪些营销活动正在驱使人们到我的站点进行表单填写的信息。

市场营销源戳记的case语句不起作用。我的搜索结果仍然具有搜索品牌的值-无论对于marketing_source列是什么,这些值现在应该只是"google-adwords“。

我也得到了创建日期为9/15/2015以及之后的结果,当我的过滤器清楚地显示createddate >= '1/1/2016‘之后。

有什么想法吗?

代码语言:javascript
复制
create table temp.roi_inqs as (
Select 
a.ID,
cast(a.createddate as date) as date,
CASE
WHEN a.marketing_source_stamp__c = 'search%' then 'google-adwords'
ELSE a.marketing_source_stamp__c
END AS marketing_source,
CASE 
when a.contactid is null then b.email
when a.contactid is not null then c.email
end as prospect_email
from rjm_current.sf_campaignmember a
left join rjm_current.sf_lead b on b.id = a.leadid
left join rjm_current.sf_contact c on c.id = a.contactid
where cast(a.createddate as date) >= '1/1/2016'
AND (
campaign_marketing_type__c in ('A','C'))
OR
(campaign_marketing_type__c = 'B'
AND a.status in ('Registered','Attended','No Show')));

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-03-11 07:01:57

您的整个谓词的形式为

代码语言:javascript
复制
A AND B OR C

如果您没有放入任何括号,这意味着您是在查询

代码语言:javascript
复制
(A AND B) OR C

当你真的想写的时候

代码语言:javascript
复制
A AND (B OR C)

作为一般规则:如果您混合使用ANDOR,请始终使用圆括号

票数 2
EN

Stack Overflow用户

发布于 2016-03-11 07:14:35

@Lukas Eder回答了我关于日期问题的问题。

对于case语句,我必须将marketing_source_stamp__c = 'search%‘更改为marketing_source_stamp__c,就像'search%’一样,这个问题就解决了。

代码语言:javascript
复制
CASE
WHEN a.marketing_source_stamp__c LIKE 'search%' then 'google-adwords'
ELSE a.marketing_source_stamp__c
END AS marketing_source,
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35928855

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档