SQL-запрос для подсчета строк на основе условия? Продолжаю получать синтаксическую ошибку в моей логике подсчета

#sql #sql-server #tsql #count #sum

Вопрос:

 select sum(bookID) as totalbooks, count(bookstatus = R) as returnedbooks
from library with (nolock)
where 
   librarylocation = 'Chesterfield'
   --and bookstatus = R
 

Поэтому я хочу, чтобы мой запрос возвращал общее количество книг в виде столбца, но сколько книг возвращается в виде столбца. Я использую счетчик, также применяя условие, но я получаю сообщение об ошибке:

Неправильный синтаксис рядом с»)».

В любом случае, чтобы достичь этого?

Комментарии:

1. Перестаньте разбрызгивать свой код с помощью nolock

Ответ №1:

Вот синтаксическая ошибка count(bookstatus = R)

Вы можете конвертировать его, как показано ниже

 select sum(bookID) as totalbooks, SUM(CASE WHEN bookstatus = R THEN 1 ELSE 0 END) as returnedbooks
from library with (nolock)
where librarylocation = 'Chesterfield'
--and bookstatus = R
 

Комментарии:

1. ... SUM(bookID) as totalbooks или ... COUNT(bookID) as totalbooks ?

2. SUM(1) эквивалентно COUNT , обе работы