2017-05-05 46 views
0

我正在編寫一個查詢來獲取某個產品的毛利潤百分比「GP%」,以按產品每年將其放到C#網格視圖中。我希望查詢結果是動態的,在某些年份這個產品沒有銷售,所以結果將是(利潤/銷售)=(0/0)它將是空的。這個null不被C#接受。將空sql查詢結果傳輸到一個字符串

查詢是

SELECT 
    FORMAT((SELECT ((ISNULL(SUM([Profit]), NULL))/ISNULL(SUM([Sales]), NULL)) 
      FROM [dbo].[Sales] 
      WHERE [ProdHeir01_2] = 'Batteries' 
       AND [Sales_Year] = 2015 
       AND [Month_Number] BETWEEN 1 AND 8, 'P') AS [Percentage] 

此查詢結果在 '空'。我如何插入一個條件來將null傳遞給一個字符串值。所以查詢是動態的:)。

感謝很多提前......

問候

回答

0

這裏是一個技術,你可能會發現有用:

選擇0/CASE WHEN ISNULL([銷售],0) = 0 THEN 1 ELSE [銷售] END

+0

謝謝,但我在哪裏可以寫出選擇和數學方程 – Hady

0

哈迪,你走了。

--CTE(Common Table Expression) with your query 
WITH preselect AS 
(
SELECT 
    FORMAT(
      (SELECT ISNULL(SUM([Profit]), NULL)/ISNULL(SUM([Sales]), NULL) 
       FROM [dbo].[Sales] 
       WHERE [ProdHeir01_2] = 'Batteries' 
       AND [Sales_Year] = 2015 
       AND [Month_Number] BETWEEN 1 AND 8 
      ) 
       ,'P' 
      ) AS [Percentage]) 

--Case statement that will return Null as string when Null and the percentage 
--when it isn't null 
SELECT CASE WHEN [Percentage] IS NULL THEN 'Null' ELSE [Percentage] END AS [Percentage] 
FROM preselect 
+0

謝謝傑森,這回答了這個問題。非常感謝。 – Hady