2013-10-28 125 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的」,如果它是空返回第一個非空值,即無論你的價值或零在這個例子中