2013-04-21 2 views
1

Запуск SQL Server 2012Исключить дублированные проверки - SQL

У меня есть запрос, который подсчитывает число клиентов, которые проверили книгу. Он также считает тех, кто дважды проверил одну и ту же книгу. Все это добавляется в столбец Customers Checked Out. Проблема в том, что я не хочу, чтобы он считал тех, кто уже проверил книгу более одного раза.

Так, например,

Book Title     Customers Checked OUt 
Title of Book1       2 
Title of Book2       3 
TItle of Book3       1 

В этом случае Название книги 1 было на самом деле только проверили один, но проверил дважды. Как я могу получить только сказать, 1 раз и не 2

ДОБАВЛЕНИЕ QUERY

SELECT 
    Book.title AS 'Title of Book', 
    COUNT(Book_Rental.Book_id) AS 'Customers Checked Out' 
FROM Book 
JOIN Book_Rental ON Book.Book_id = Book_Rental.Book_id 
JOIN Customer ON Book_Rental.Customer_id = Customer.customer_id 
GROUP BY Book.Title 
ORDER BY [# of Customers Rented] DESC; 
+0

Какой у вас текущий запрос? – urlreader

ответ

2

Предположительно, ваш запрос что-то вроде:

select BookTitle, count(*) 
from CheckOuts 
group by BookTitle 

Вы хотите изменить count() к count(distinct) :

select BookTitle, count(distinct customerId) 
from CheckOuts 
group by BookTitle 

Поскольку вы предоставили запрос, я думаю, что это w Вы хотите:

SELECT Book.title AS 'Title of Book', 
     COUNT(distinct Book_Rental.Customer_id) AS 'Customers Checked Out' 
FROM Book 
JOIN Book_Rental ON Book.Book_id = Book_Rental.Book_id 
JOIN Customer ON Book_Rental.Customer_id = Customer.customer_id 
GROUP BY Book.Title 
ORDER BY [# of Customers Rented] DESC; 
+0

Это устанавливает все значения для Проверенных Клиентов на '1'. В таблице Book_Rental есть несколько клиентов, которые арендовали одну и ту же книгу, поэтому, например, «Название книги2» должно иметь результат «2» – user168403

+0

. Ваше последнее изменение сделало трюк! где можно использовать DISTINCT? только в выбранных операторах? – user168403

Смежные вопросы