2017-05-05 5 views
0

특정 제품의 매출 총 이익 백분율 "GP %"를 얻기 위해 제품 별 C# 그리드보기에 넣을 쿼리를 작성하고 있습니다. 결과가 (이익/매출) = (0/0)이 될 것이므로 몇 년 동안이 제품이 판매되지 않은 동적 인 질의 결과를 원할 것입니다. 이 null은 C#에서는 받아 들여지지 않습니다.문자열로 null 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를 선택하면 ISNULL ([판매], 0) = 0 그 다음 [판매] 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

감사합니다. Jason,이 질문에 답변했습니다. 정말 고마워. – Hady