2016-11-14 2 views
0

Ich bin ziemlich neu in SQL und ich bin fest. Ich habe die folgende Abfrage in SQL Server 2008, die ein Leckerbissen funktioniert, aber ich muss die Ergebnisse für "ErrorHandling" festlegen, um als 0 angezeigt, wenn ein Ergebnis von 1 zurückgegeben wird, aber andere Ergebnisse als sie sind (die Ergebnisse gehen in a Webseite kann also nichts wie 'null' oder gar keine Ergebnisse anzeigen lassen.SQL Server 2008 Hilfe benötigt

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 

Dies ist das Ausgabeformat ich brauche:

Results

Ich habe versucht CASE verwenden, aber kann nicht scheinen, um es zu bekommen zu arbeiten. Jede Hilfe würde sehr geschätzt werden.

Dank Mike

+0

Können Sie uns ein Beispiel für die Ausgabe mit Testdaten über das, was Sie zu tun versuchen? –

+0

Was genau Abfrage mit 'Fall' Sie versucht haben? Sie haben es nicht in Frage gestellt - so ist es schwer zu sagen, was Sie falsch gemacht haben ... –

+0

siehe diese Antworten: http: //stackoverflow.com/questions/17839212/return-zero-if-no-record -is-found – TheGameiswar

Antwort

0

Ein CASE Ausdruck sollte funktionieren:

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 
;