2015-11-20 121 views
1

我有下面的SQL腳本。這非常簡單,不幸的是只有where子句決定顯示哪些廣告系列正在運行。SQL WHERE子句不起作用

SELECT 
    a.id, 
    a.leadid, 
    a.campaign_name__c, 
    cast(a.firstrespondeddate as date), 
    b.status, 
    cast(b.createddate as date), 
    b.ownerid 
FROM rjm_current.sf_campaignmember a 
    LEFT JOIN rjm_current.sf_lead b ON a.leadid = b.id 
WHERE a.campaign_name__c LIKE '%demo%' OR a.campaign_name__c LIKE '%contact%' 
    AND cast(a.firstrespondeddate as date) <> '7/14/2015' 
    AND b.status = 'New' 
    AND a.contactid IS NULL 
    AND a.leadid IS NOT NULL 

任何幫助非常感謝。在另一個查詢中,我必須將firstrespondeddate轉換爲一個表中的日期,並使用另一個表來表示firstrespondeddate <> '7/15/2015',但它應該不需要創建一堆表。

回答

1

OR表達應該放在括號:

WHERE (a.campaign_name__c like '%demo%' OR a.campaign_name__c like '%contact%') 
and cast(a.firstrespondeddate as date) <> '7/14/2015' 
and b.status = 'New' 
and a.contactid is null 
and a.leadid is not null 

Operator Precedence

+0

謝謝!還有一個問題:在下面的查詢中,我正在進行左連接,但爲我要加入的表獲取多個記錄。足夠奇怪的是,在我對錶進行左連接之後還有更多記錄。 – Berra2k

+0

創建表temp.overlord_responses3如( 選擇 a.lead_contact_id, a.responded_date, a.created_date, a.member_type, a.campaign, 鑄造(b.createddate如日期)作爲activity_date, 灣受試者 從temp.overlord_responses2一個 LEFT JOIN rjm_current.sf_task b關於a.lead_contact_id = b.whoid 其中(b.createddate Berra2k

+0

這從加入的感覺和結果是很自然的。 – klin