2016-05-28 12 views
1

私は、列内の類似の値の数をカウントする簡単なクエリを作成するのが好きです。例は、予想される出力はCount in sテーブルSQL Server

'DYS'、7,2,3

が同じのためのいくつかの迅速かつ効率的なソリューションを共有してくださいにする必要があり、ここで

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) 

以下です。この操作は数百万のレコードで実行する必要があるため、パフォーマンスは大きな問題になります。値がバイナリであるため、

SELECT dyscode, 
     SUM(isVerified), 
     SUM(isCorrect), 
     SUM(isRejected), 
     SUM(isDeleted) 
FROM  @temo 
GROUP BY dyscode 
+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
Select dyscode, 
sum(isVerified), 
sum(isCorrect), 
sum(isRejected), 
sum(isDeleted) 
     From 
     @temo 
    Group by dyscode 

使用sum関数:あなただけの0/1の列を合計しているよう

0

dyscode列と他の列の合計をグループ化する必要があります。

以下のクエリを使用できます。

Select dyscode ,SUM(isVerified),SUM(isCorrect),SUM(isRejected),SUM(isDeleted) from #temo group by dyscode