2013-10-28 126 views
-2

我试图为每个销售人员每周生成数据,同时将我的结果与上周进行比较,并从当周减去上周。有时候本周没有任何价值。我想通过替换'0'来处理这种情况。我不擅长这一点,所以我正在寻求帮助。处理空值

SELECT t2.emp_name, 
     t2.pipelinetarget, 
     Sum(t0.maxsumloc)    AS SaleOpp, 
     Datepart(ww, t0.opendate)  AS [Week #], 
     Isnull ((SELECT Sum(maxsumloc) AS Expr1 
       FROM dbo.oopr AS A 
       WHERE (slpcode = t1.slpcode) 
         AND (Datepart(ww, opendate) = 
          Datepart(ww, Getdate()) - 1) 
         AND (Datepart(yy, opendate) = Datepart(yy, Getdate())) 
       GROUP BY slpcode), 0) AS LastWeek, 
     Isnull ((SELECT Sum(maxsumloc) AS Expr1 
       FROM dbo.oopr AS A 
       WHERE (Datepart(ww, opendate) = Datepart(ww, Getdate())) 
         AND (Datepart(yy, opendate) = Datepart(yy, Getdate())) 
         AND (maxsumloc >= 10000.00) 
         AND (slpcode = t1.slpcode) 
       GROUP BY slpcode), 0) AS [SumOf-Opp-obove-10k], 
     Isnull ((SELECT Count(opprid) AS Expr1 
       FROM dbo.oopr AS A 
       WHERE (Datepart(ww, opendate) = Datepart(ww, Getdate())) 
         AND (Datepart(yy, opendate) = Datepart(yy, Getdate())) 
         AND (maxsumloc >= 10000.00) 
         AND (slpcode = t1.slpcode) 
       GROUP BY slpcode), 0) AS [#-Opp-obove-10k], 
     Isnull ((SELECT Sum(maxsumloc) AS Expr1 
       FROM dbo.oopr AS A 
       WHERE (Datepart(ww, opendate) = Datepart(ww, Getdate())) 
         AND (Datepart(yy, opendate) = Datepart(yy, Getdate())) 
         AND (maxsumloc < 10000.00) 
         AND (slpcode = t1.slpcode) 
       GROUP BY slpcode), 0) AS [SumOf-Opp-below-10k], 
     Isnull ((SELECT Count(opprid) AS Expr1 
       FROM dbo.oopr AS A 
       WHERE (Datepart(ww, opendate) = Datepart(ww, Getdate())) 
         AND (Datepart(yy, opendate) = Datepart(yy, Getdate())) 
         AND (maxsumloc < 10000.00) 
         AND (slpcode = t1.slpcode) 
       GROUP BY slpcode), 0) AS [#-Opp-below-10k] 
FROM dbo.oslp AS t1 
     LEFT OUTER JOIN dbo.oopr AS t0 
        ON t1.slpcode = t0.slpcode 
     LEFT OUTER JOIN dbo.[user_qsalestarget(salesrep)] AS t2 
        ON t2.emp_name = t1.slpname 
     LEFT OUTER JOIN dbo.ocrd AS t4 
        ON t4.cardcode = t0.cardcode 
     LEFT OUTER JOIN dbo.[user_clusters(sp)] AS t5 
        ON t5.emp_name = t1.slpname 
WHERE (Datepart(ww, t0.opendate) = Datepart(ww, Getdate())) 
     AND (Datepart(yy, t0.opendate) = Datepart(yy, Getdate())) 
     AND (t5.title = 'Outside Sales Rep') 
GROUP BY t2.emp_name, 
      t1.slpcode, 
      Datepart(ww, t0.opendate), 
      t2.pipelinetarget 
+0

任何机会,我们可以得到一些创建表语句以更好地帮助你? – David

回答

1

看聚结的功能,例如“SELECT COALESCE(thePossibleNullValue,0)FROM mytable的”,如果它是空返回第一个非空值,即无论你的价值或零在这个例子中