2016-11-14 11 views
0

私はSQLにかなり慣れています。 SQL Server 2008で次のクエリを処理しますが、1の結果が返されたときに他の結果が残っている場合は0として表示されるように 'ErrorHandling'の結果を設定する必要があります。ウェブページには、「null」や全く結果が表示されないなどの何かを持つことはできません)。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 -is-found – 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 
;