2016-05-28 2 views
1

Мне нравится создавать простой запрос для подсчета числа одинаковых значений в столбце. Пример здесь нижеТаблица в таблице SQL Server

declare @temo table (sno int identity, dyscode varchar(200), isVerified bit, isCorrect bit, isRejected bit, isDeleted bit) 

insert into @temo values('dys',1,1,0,0) 
insert into @temo values('dys',1,1,0,0) 
insert into @temo values('dys',1,0,1,0) 
insert into @temo values('dys',1,0,0,1) 
insert into @temo values('dys',1,0,1,0) 
insert into @temo values('dys',1,0,0,1) 
insert into @temo values('dys',0,0,0,0) 
insert into @temo values('dys',1,0,0,1) 

Ожидаемые результаты должны быть

'DYS', 7,2,3

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

+2

не должны быть ваш выход 'DYS, 7,2,2,3'? – DavidG

ответ

3

Вам нужно, чтобы столбцы бит выполняли функцию sum, потому что функция sum не поддерживает тип данных бит.

Ссылка для справки: https://msdn.microsoft.com/en-IN/library/ms187810.aspx

Ниже запрос будет искомый результат: -

SELECT dyscode, 
    sum(cast(isVerified as int)), 
    sum(cast(isCorrect as int)), 
    sum(cast(isRejected as int)), 
    sum(cast(isDeleted as int)) 
FROM  @temo 
GROUP BY dyscode 
0

Похоже, вы просто суммированием 0/1 столбцов:

SELECT dyscode, 
     SUM(isVerified), 
     SUM(isCorrect), 
     SUM(isRejected), 
     SUM(isDeleted) 
FROM  @temo 
GROUP BY dyscode 
0
Select dyscode, 
sum(isVerified), 
sum(isCorrect), 
sum(isRejected), 
sum(isDeleted) 
     From 
     @temo 
    Group by dyscode 

Использование функции сумма, так как значения являются бинарными.

0

Вам необходимо группировать столбец dyscode и сумму другого столбца.

Вы можете использовать нижеследующий запрос.

Select dyscode ,SUM(isVerified),SUM(isCorrect),SUM(isRejected),SUM(isDeleted) from #temo group by dyscode 
Смежные вопросы