2009-12-01 36 views
0

我正在創建一個報告。在這裏,我顯示的是全部的銷售線索,通過傳真發送的線索和通過短信發送的線索。我寫了一個過程來獲取記錄。在這裏,我必須檢查通過短信發送的信息和通過傳真發送的信息不應爲零的情況。如果兩者都爲零,我不應該獲取記錄。如果其中一人有任何價值,我應該取得記錄。是否有可能通過SQL查詢來實現它。在一個條件下實現兩個過濾器 - SQL

FROM OP註釋astander

SELECT C.ClientID , 
     C.ClientName , 
     C.OrganizationName, 
     C.FirstName , 
     S.SMSOverageRate , 
     '' as Cost , 
     Count(*) as TotalLeads , 
     Sum(CASE DeliveryViaFax WHEN 'Y' THEN 1 ELSE 0 END) AS FaxCount , 
     Sum(CASE DeliveryViaSMSEmail WHEN 'Y' THEN 1 ELSE 0 END) AS SMSCount 
FROM CMN_LeadSaleDetails S INNER JOIN 
     CMN_LeadClients C ON C.ClientID = S.BuyerID 
WHERE C.SellerTenantId = @TenantId 
AND  S.SellerJournalID = CASE @JournalId WHEN 0 THEN S.SellerJournalID ELSE @JournalId END 
GROUP BY C.ClientID , 
     C.ClientName , 
     C.OrganizationName, 
     C.FirstName , 
     S.SMSOverageRate 
+1

是的,它是,b讓你給出一個更詳細的答案,這將真正鼓勵你,你介意分享你現在的代碼嗎? – 2009-12-01 08:58:59

回答

2

你可以嘗試這樣的

SELECT * 
FROM TABLE 
WHERE (TotalSMSLeads != 0 
OR TotalFaxLeads != 0) 

東西提供查詢實例,我們可以進一步爲您提供幫助。

OK,從你的評論,我會嘗試這樣的事情

SELECT C.ClientID , 
     C.ClientName , 
     C.OrganizationName, 
     C.FirstName , 
     S.SMSOverageRate , 
     '' as Cost , 
     Count(*) as TotalLeads , 
     Sum(CASE DeliveryViaFax WHEN 'Y' THEN 1 ELSE 0 END) AS FaxCount , 
     Sum(CASE DeliveryViaSMSEmail WHEN 'Y' THEN 1 ELSE 0 END) AS SMSCount 
FROM CMN_LeadSaleDetails S INNER JOIN 
     CMN_LeadClients C ON C.ClientID = S.BuyerID 
WHERE C.SellerTenantId = @TenantId 
AND  S.SellerJournalID = CASE @JournalId WHEN 0 THEN S.SellerJournalID ELSE @JournalId END 
GROUP BY C.ClientID , 
     C.ClientName , 
     C.OrganizationName, 
     C.FirstName , 
     S.SMSOverageRate 
HAVING ( Sum(CASE DeliveryViaFax WHEN 'Y' THEN 1 ELSE 0 END) != 0 
     OR Sum(CASE DeliveryViaSMSEmail WHEN 'Y' THEN 1 ELSE 0 END) != 0) 
+0

C.ClientID ,C.ClientName ,C.OrganizationName C.FirstName ,S.SMSOverageRate , '' 如成本 ,COUNT(*)作爲TotalLeads ,SUM(CASE WHEN DeliveryViaFax 'Y' THEN ELSE 1 0 END)AS FaxCount ,SUM(CASE WHEN DeliveryViaSMSEmail 'Y' THEN ELSE 1 0 END)AS SMSCOUNT條 FROM CMN_LeadSaleDetails小號 INNER JOIN CMN_LeadClients C ON C.ClientID = S.BuyerID WHERE \t C.SellerTenantId = @TenantId AND S.SellerJournalID = CASE @ JournalId 0當S.SellerJournalID ELSE @JournalId 這是我的示例查詢。我必須檢查傳真計數和短信計數不應該爲零 – susanthosh 2009-12-01 09:07:12

+0

你贏了,你的很整潔。 – 2009-12-01 09:14:29

+0

嗨觀衆, 它爲我工作。非常感謝你。 – susanthosh 2009-12-01 09:15:18

2

或者..

Select * 
From TABLE 
Where (SMSLeads + FaxLeads) > 0 

使用您的SQL

Select C.ClientID ,C.ClientName ,C.OrganizationName 
C.FirstName ,S.SMSOverageRate ,'' as Cost, 
Count(*) as TotalLeads , 
Sum(CASE DeliveryViaFax WHEN 'Y' THEN 1 ELSE 0 END) AS FaxCount , 
Sum(CASE DeliveryViaSMSEmail WHEN 'Y' THEN 1 ELSE 0 END) AS SMSCount 

FROM CMN_LeadSaleDetails S INNER JOIN CMN_LeadClients C ON C.ClientID = S.BuyerID WHERE C.SellerTenantId = @TenantId AND S.SellerJournalID = CASE @JournalId WHEN 0 THEN S.SellerJournalID ELSE @JournalId Group By C.ClientID ,C.ClientName ,C.OrganizationName C.FirstName ,S.SMSOverageRate Having (FaxCount+SMSCount) > 0

+0

HI leigh-shayler, 我正在使用聚合函數獲得faxleads和SMS引導值。我該如何在這種情況下實現它 – susanthosh 2009-12-01 09:12:01

+0

感謝你回覆哥們。 – susanthosh 2009-12-01 09:16:17