2015-07-21 65 views
-3

我有一个代码来查看我的销售员工。他最近被聘用为已灭绝的客户创造增长。因此,对于我们在dbase中拥有的1,000多个客户,他只会影响100.因此,在他的值为NULL的位置生成了很多行。我希望报告能排除那些客户行,以便更好地理解我的管理。我怎么做到这一点?我有数千行的NULL结果。如何在不存在的情况下排除这些填充内容?

select T1.CardCode 'BP Code', 
     T1.CardName 'BP Name', 
     COUNT(CASE WHEN T1.SlpCode<>'37' THEN T0.DocNum END) '# of Orders', 
     SUM(CASE WHEN T1.SlpCode<>'37' THEN T0.DocTotal END) 'Total Orders Amt', 
     SUM(CASE WHEN T1.SlpCode<>'37' THEN T0.DOCTOTAL END)/ 
     COUNT(CASE WHEN T1.SlpCode<>'37' THEN T0.DocNum END) 'Avg Order Size', 
     COUNT(CASE WHEN T1.SlpCode='37' THEN T0.DocNum END) '# of Orders', 
     SUM(CASE WHEN T1.SlpCode='37' THEN T0.DocTotal END) 'Total Orders Amt', 
     SUM(CASE WHEN T1.SlpCode='37' THEN T0.DOCTOTAL END)/ 
     COUNT(CASE WHEN T1.SlpCode='37' THEN T0.DocNum END) 'Avg Order Size' 

from ORDR T0 INNER JOIN OCRD T1 ON T0.CardCode=T1.CardCode 

where T0.DocStatus = 'C' 
     AND T0.CANCELED <> 'Y' 
     AND T0.DocDate >= '2015-05-26' 

GROUP BY T1.CardCode, 
      T1.CardName 

Order By t1.CardName 

回答

0

尝试包括

AND T1.SlpCode is NOT NULL

+0

营业员37是我想分析他已经加入到我们现有的客户实际增长销售额的雇员。我正在查看总共6列数据。前3,所有其他sales/csr代表与客户有关的数据。最后3分与前3分相同,但仅限于销售员#37涉及销售时。 – KTate

+1

好的,那么你试图排除的是空数据? –

+0

我想排除销售员工37与客户(BP)相关的数据。目前,他只与1,000名客户中的6名进行销售。我只想看到那6个账户,而不是那些6个加994的NULL值,他对这些账户没有任何影响。 – KTate

0
select tnot.*, tyes.* 
from (select OCRD.CardCode 'BP Code', 
       OCRD.CardName 'BP Name', 
       COUNT(ORDR.DocNum) '# of Orders', 
       SUM(ORDR.DocTotal) 'Total Orders Amt' 
     FROM OCRD 
     LEFT JOIN ORDR 
      ON ORDR.CardCode= OCRD.CardCode 
      AND ORDR.CANCELED <> 'Y' 
      AND ORDR.DocDate >= '2015-05-26' 
      AND OCRD.SlpCode <> '37' 
    GROUP BY OCRD.CardCode, 
       OCRD.CardName 
    ) tnot  
join (select OCRD.CardCode 'BP Code', 
       OCRD.CardName 'BP Name', 
       COUNT(ORDR.DocNum) '# of Orders', 
       SUM(ORDR.DocTotal) 'Total Orders Amt' 
     FROM OCRD 
     JOIN ORDR 
      ON ORDR.CardCode= OCRD.CardCode 
      AND ORDR.CANCELED <> 'Y' 
      AND ORDR.DocDate >= '2015-05-26' 
      AND OCRD.SlpCode = '37' 
    GROUP BY OCRD.CardCode, 
       OCRD.CardName 
    ) tyes 
    on tnot.[BP Code] = tyes.[BP Code] 
    and tnot.[BP Name] = tyes.[BP Name] 
order by tyes.[BP Name] 
+0

感谢您的回复Blam。我将查询输入到SQL Management Studio中,并收到以下消息:“Msg 1033,Level 15,State 1,Line 15 ORDER BY子句在视图,内联函数,派生表,子查询和公用表表达式中无效,除非还指定了TOP或FOR XML Msg 102,Level 15,State 1,Line 28 'tyes'附近的语法错误。“ – KTate

+0

你有试过吗? – Paparazzi

+0

我没有。我现在只是尝试过,它给了我结果。它生成销售员工是其他销售员工生成销售的所有者的客户帐户。我想基本上有我最初给出的查询,并修剪出NULL结果。我确实喜欢这个查询。有趣的是看到销售员工账户上的销售情况,他们没有做出贡献。 – KTate

相关问题