2009-08-26 8 views
1

クエリビルダのSQL Server 2005では、私は自動的に「グループを追加」を選択します 選択したすべてのフィールドにgroup by句を追加します。これらのフィールドの1つ以上がビットタイプの場合、エラーが発生します。どうしてこれなの?カラムをTINYINTにキャストしてもよいですか?ビット列でグループ化できません

+0

エラーは何ですか?私はビットフィールドでグループを使用して問題を抱えていません。 – JeffO

+0

列は集計関数に含まれていないため、選択リストでは無効です。これは私が見た後、グループには含まれていなかったので私のせいでした。私はこの質問を笑う方法を見つけることを試みている。 – Marlon

+1

それを残しなさい。答えにコードを教えてください。 – JeffO

答えて

3

このツールの制限のようです。 SQL Server Management Studioで実際のSQLを書くだけであれば、それはうまくいくでしょう。

CREATE TABLE Test2 
(ID INT, 
bitvalue bit, 
flag char(1)) 
GO 

insert into test2 values (1,1,'a') 
insert into test2 values (2,1,'a') 
insert into test2 values (3,1,'a') 
insert into test2 values (4,1,'b') 
insert into test2 values (5,1,'b') 
insert into test2 values (6,1,'b') 
insert into test2 values (7,1,'b') 

insert into test2 values (10,0,'a') 
insert into test2 values (20,0,'a') 
insert into test2 values (30,0,'a') 
insert into test2 values (40,0,'b') 
insert into test2 values (50,0,'b') 
insert into test2 values (60,0,'b') 
insert into test2 values (70,0,'b') 

select * from test2 

select count(*),bitvalue,flag from test2 group by bitvalue,flag 

OUTPUT

ID   bitvalue flag 
----------- -------- ---- 
1   1  a 
2   1  a 
3   1  a 
4   1  b 
5   1  b 
6   1  b 
7   1  b 
10   0  a 
20   0  a 
30   0  a 
40   0  b 
50   0  b 
60   0  b 
70   0  b 

(14 row(s) affected) 

      bitvalue flag 
----------- -------- ---- 
3   0  a 
3   1  a 
4   0  b 
4   1  b 

(4 row(s) affected) 
+0

ありがとう!私は私のデータでこれを試してみる – Marlon

2

ツールは、このようなインデックスやビット列でグループ化するなど、いくつかの操作を許可しない:

は、ここに私のテストコードです。生のSQLはそうです。

ビット列に集約することはできません。あなたが最初にキャストする必要があります。もちろん、ビット列を平均化するのは無意味ですが、MAX/MINは複数の行にまたがるOR/ANDとして便利です。

関連する問題