2016-03-10 2 views
0

Я запускаю следующий сценарий SQL для создания таблицы с информацией о том, какие маркетинговые усилия приводят людей на мой сайт для заполнения форм.Заявление о ситуации в Redshift SQL и WHERE не работает

Заявление о производстве для маржировки источника маркетинга не работает. Мои результаты все еще имеют значения для поискового бренда - независимо от столбца marketing_source, когда эти значения теперь должны просто читать «google-adwords».

Я также получаю результаты с созданной датой от 15/15/2015, а после того, как в моем фильтре четко указано, что createddate> = '1/1/2016'.

Любые идеи?

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'))); 

enter image description here

ответ

1

Ваш весь предикат имеет вид

A AND B OR C 

Если вы не ставите никаких скобок, это означает, что вы запрашивая

(A AND B) OR C 

Когда ты действительно хотел написать

A AND (B OR C) 

По общему правилу: Всегда ставьте круглые скобки, если вы смешиваете AND и OR

+0

не повезло! эта же ошибка все еще происходит. Как ни странно, когда я ссылаюсь на таблицу, которую я создал, и в этом вопросе я говорю «Where date> = '1/1/2016», он правильно избавляется от записей и фильтров 2015 года. – Berra2k

0

@Lukas Эдер ответил на мой вопрос по этому вопросу даты.

Для оператора case мне пришлось изменить marketing_source_stamp__c = 'поиск%' на marketing_source_stamp__c LIKE 'search%', и эта проблема решена.

CASE 
WHEN a.marketing_source_stamp__c LIKE 'search%' then 'google-adwords' 
ELSE a.marketing_source_stamp__c 
END AS marketing_source, 
+1

О, я забыл, что у вас был второй вопрос, извините за это. Спасибо, что ответили здесь –

Смежные вопросы