2016-11-14 3 views
0

Я довольно новичок в SQL, и я застрял. У меня есть следующий запрос в SQL Server 2008, который работает с удовольствием, но мне нужно установить, чтобы результаты для ErrorHandling отображались как 0, когда результат 1 был возвращен, но оставлять любые другие результаты такими, какие они есть (результаты идут в веб-страница не может иметь ничего подобного «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 -используется – 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 
; 
Смежные вопросы