Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как отобразить 0 вместо пустой строчки?  [new]
lena5il
Member

Откуда:
Сообщений: 21
У меня есть запрос:

select Operators.OperatorId,
   count(Operator2Manufacturer.typeOfSubscriber) As numOfA 
from Operators Left Join Operator2Manufacturer 
   ON Operators.OperatorId = Operator2Manufacturer.operatorId
where Operators.operatorId = '1' 
   and Operator2Manufacturer.typeOfSubscriber = 'A'
GROUP BY Operators.OperatorId

и все работает хорошо. Но проблемма в том, что когда
не существует такой строчки в таблице, то запрос, соответственно ничего не выдает. Мне же нужно, что бы в столбике numOfA, в случае если записи с Operator2Manufacturer.typeOfSubscriber = 'A' не существует,
отображался 0.
Как это сделать?
20 дек 04, 14:30    [1193549]     Ответить | Цитировать Сообщить модератору
 Re: Как отобразить 0 вместо пустой строчки?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37101
isnull()
20 дек 04, 14:32    [1193563]     Ответить | Цитировать Сообщить модератору
 Re: Как отобразить 0 вместо пустой строчки?  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381
select Operators.OperatorId,
   count(Operator2Manufacturer.typeOfSubscriber) As numOfA 
from Operators Left Join Operator2Manufacturer 
   ON Operators.OperatorId = Operator2Manufacturer.operatorId
      and Operator2Manufacturer.typeOfSubscriber = 'A'
where Operators.operatorId = '1' 
GROUP BY Operators.OperatorId
20 дек 04, 14:45    [1193642]     Ответить | Цитировать Сообщить модератору
 Re: Как отобразить 0 вместо пустой строчки?  [new]
Smc
Member

Откуда: Днепродзержинск
Сообщений: 20
select Operators.OperatorId,
isnull(count(Operator2Manufacturer.typeOfSubscriber),0) As numOfA
from Operators Left Join Operator2Manufacturer
ON Operators.OperatorId = Operator2Manufacturer.operatorId
where Operators.operatorId = '1'
and Operator2Manufacturer.typeOfSubscriber = 'A'
GROUP BY Operators.OperatorId
20 дек 04, 14:59    [1193715]     Ответить | Цитировать Сообщить модератору
 Re: Как отобразить 0 вместо пустой строчки?  [new]
lena5il
Member

Откуда:
Сообщений: 21
так тоже не работает:
select Operators.OperatorId,
                count(IsNull(Operator2Manufacturer.typeOfSubscriber,'0')) As numOfA 
from Operators Left Join Operator2Manufacturer 
	ON Operators.OperatorId = Operator2Manufacturer.operatorId
where Operators.operatorId = '1' 
	and Operator2Manufacturer.typeOfSubscriber = 'A'
GROUP BY Operators.OperatorId
Я наверно не точно объяснила проблемму:
он не отображает всю строчку, а не только столбик numOfA.
20 дек 04, 15:25    [1193848]     Ответить | Цитировать Сообщить модератору
 Re: Как отобразить 0 вместо пустой строчки?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37101
https://www.sql.ru/forum/actualthread.aspx?tid=147015#1193642 должен работать.
20 дек 04, 15:26    [1193856]     Ответить | Цитировать Сообщить модератору
 Re: Как отобразить 0 вместо пустой строчки?  [new]
@svald
Member

Откуда:
Сообщений: 45
как вариант:
select Operators.OperatorId,
   --=========
   case     
     when  count(Operator2Manufacturer.typeOfSubscriber) is not null then  count(Operator2Manufacturer.typeOfSubscriber)
     else 0
   end
   --=========
    As numOfA 
from Operators Left Join Operator2Manufacturer 
   ON Operators.OperatorId = Operator2Manufacturer.operatorId
where Operators.operatorId = '1' 
   and Operator2Manufacturer.typeOfSubscriber = 'A'
GROUP BY Operators.OperatorId

20 дек 04, 15:33    [1193907]     Ответить | Цитировать Сообщить модератору
 Re: Как отобразить 0 вместо пустой строчки?  [new]
lena5il
Member

Откуда:
Сообщений: 21
так работает:
select Operators.OperatorId,  
count(Operator2Manufacturer.typeOfSubscriber) As numOfA                            
from Operators Left Join Operator2Manufacturer                                        
ON Operators.OperatorId = Operator2Manufacturer.operatorId 
and Operator2Manufacturer.typeOfSubscriber = 'A'                                      
where Operators.IdOfMain = '1'                                     
GROUP BY Operators.OperatorId
всем спасибо
20 дек 04, 16:50    [1194284]     Ответить | Цитировать Сообщить модератору
 Re: Как отобразить 0 вместо пустой строчки?  [new]
lena5il
Member

Откуда:
Сообщений: 21
так тоже не работает:
select Operators.OperatorId,
   count(Operator2Manufacturer.typeOfSubscriber) As numOfA 
from Operators Left Join Operator2Manufacturer 
   ON Operators.OperatorId = Operator2Manufacturer.operatorId
and Operator2Manufacturer.typeOfSubscriber = 'A'
where Operators.operatorId = '1' 
   
GROUP BY Operators.OperatorId
Я наверно не точно объяснила проблемму:
он не отображает всю строчку, а не только столбик numOfA.
20 дек 04, 18:17    [1194691]     Ответить | Цитировать Сообщить модератору
 Re: Как отобразить 0 вместо пустой строчки?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37101
select b.*, a.numOfA
from (
  select Operators.OperatorId,
     count(Operator2Manufacturer.typeOfSubscriber) As numOfA 
  from Operators Left Join Operator2Manufacturer 
     ON Operators.OperatorId = Operator2Manufacturer.operatorId
  and Operator2Manufacturer.typeOfSubscriber = 'A'
  where Operators.operatorId = '1' 
  GROUP BY Operators.OperatorId
) a inner join Operators b on a.operatorid = b.opertorid
20 дек 04, 18:32    [1194741]     Ответить | Цитировать Сообщить модератору
 Re: Как отобразить 0 вместо пустой строчки?  [new]
Glory
Member

Откуда:
Сообщений: 104760
lena5il
Я наверно не точно объяснила проблемму:
он не отображает всю строчку, а не только столбик numOfA.

Что-то вы путаете.
Согласно этому запросу будет выведены все записи из таблицы Operators где operatorId = '1'
21 дек 04, 10:55    [1195702]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить