2009-12-01 68 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