2016-11-14 106 views
0

我對SQL很陌生,而且卡住了。在SQL Server 2008中,我有以下查詢,但是我需要將'ErrorHandling'的結果設置爲0,當結果爲1時返回,但保留其他結果(結果進入網頁所以不能有任何像'空'或根本沒有結果顯示)。需要SQL Server 2008的幫助

USE IDS_Queues 

SELECT FSState AS [hersham], COUNT(FSState) AS Totals 
FROM hersham_idsinfo 
WHERE (FSState = 'Loading') OR 
     (FSState = N'Replicating') OR 
     (FSState = N'ErrorHandling') OR 
     (FSState = N'WaitingToReceiveMulticast')OR 
     (FSState = N'GeneratingSubfiles') 
GROUP BY FSState 

這是輸出格式,我需要:

Results

我一直在使用CASE嘗試,但似乎無法得到它的工作。任何幫助將非常感激。

感謝 邁克

+0

你能不能給我們的測試數據的示例輸出什麼你想幹什麼? –

+0

使用'case'查詢了什麼?你還沒有顯示它的問題 - 所以很難說你做錯了什麼... –

+0

看到這個答案:http://stackoverflow.com/questions/17839212/return-zero-if-no-record發現 – TheGameiswar

回答

0

一個CASE表達式應該很好地工作:

SELECT [hersham], 
     CASE 
      WHEN [hersham] = N'ErrorHandling' AND Totals = 1 THEN 0 
      ELSE Totals 
     END Totals 
FROM ( SELECT FSState AS [hersham], 
       COUNT(FSState) AS Totals 
     FROM hersham_idsinfo 
     WHERE FSState IN (N'Loading',N'Replicating',N'ErrorHandling', 
          N'WaitingToReceiveMulticast',N'GeneratingSubfiles')) X 
;