2016-03-31 4 views
0

AccessデータベースをExcelファイルに接続し、いくつかの単純なSQLクエリを実行し、可能であるかどうかわからないものを実行したい。値がSQLで繰り返されるときに列をグループ化する方法

値を繰り返して列に値をグループ化する必要があります。例えば

、ここでは単純なクエリの結果である:

ID | Name | Color 1 John Red 1 John Yellow 2 Bill Red 2 Bill Blue 2 Bill Black

私は、結果がそのように提示することを希望:

ID | Name | Color 1 John Red Yellow 2 Bill Red Blue Black

が可能ということですか?

あなたの回答をよろしく!

ありがとうございました。

+0

を試してみてください。..不可能であり、それは不可能です。何のためにそれが必要ですか? –

+0

私のクエリの結果は単純なクエリよりもはるかに大きいので、データの表示に便利です。 –

+0

@ImranAliすべてのタグは関連しています.Excelを使用してAccessデータソースに接続し、SQLクエリを実行します。 –

答えて

1

これはSQLクエリの結果ではありません。 'Color'フィールドに関連付けられた 'ID'フィールドと 'Name'フィールドの値が存在する場合、クエリに値が表示されます。さらに、クエリ結果には、ビルではなく、Jhonと関連付けられるものはありません。

Excelで表示することを目標にしている場合は、コードIDを下にして上に移動し、上記のセルに等しい値のセルを削除することができます。ここで

0

あなたはgo..Nothingが

create table tbl_table 
(Id int, 
Name varchar(32), 
Color varchar(16) 
) 
go 

insert into tbl_table 
values(1,'John','Red'); 
insert into tbl_table 
values(1,'John','Yellow'); 
insert into tbl_table 
values(2,'Bill','Red'); 
insert into tbl_table 
values(2,'Bill','Blue'); 
insert into tbl_table 
values(2,'Bill','Black'); 
go 

select a.id,case when a.Id=b.Id and a.rowid<>b.rowid then NULL else a.Name end,a.Color 
from 
(
select ROW_NUMBER() OVER (Order by Id asc) rowid,* from tbl_table 
) a 
left join 
(
select ROW_NUMBER() OVER (Order by Id asc) rowid,* from tbl_table 
) b 
on a.rowid-1=b.rowid 

おかげ

+0

このクエリは私にとっては機能しません。私はAccessでSQLクエリエディタでクエリを実行しようとしています。 –

+0

あなたはどのバージョンを使用していますか? –

+0

私はAccess 2013を使用しています –

0
create table tbl_table 
(Id int, 
Name varchar(32), 
Color varchar(16) 
) 
go 

insert into tbl_table 
values(1,'John','Red'); 
insert into tbl_table 
values(1,'John','Yellow'); 
insert into tbl_table 
values(2,'Bill','Red'); 
insert into tbl_table 
values(2,'Bill','Blue'); 
insert into tbl_table 
values(2,'Bill','Black'); 
go 

select a.id,case when a.Id=b.Id and a.rowid<>b.rowid then NULL else a.Name end,a.Color 
from 
(
select DCount("[ID]","[tbl_table]","[ID]<=" & [ID]) rowid,* from tbl_table 
) a 
left join 
(
select DCount("[ID]","[tbl_table]","[ID]<=" & [ID]) rowid,* from tbl_table 
) b 
on a.rowid-1=b.rowid 

だけではSQLを使用してこの

+0

@Andreこんにちは、何らかの理由で動作しません。エラーメッセージ "a.Id = b.Idとa.rowid <> b.rowidのときにクエリ式の構文エラー(演算子が見つかりません)が表示され、NULL else a.Name end ''が返されます。 「OK」をクリックした直後に「when」という単語をマークします。 –

+0

@GiladK:私はこのコードを書かなかった、私はちょうどそれをフォーマットした。 :)ケースの代わりにIIf()を使用する必要があります。 – Andre

+0

IIf()でケースを置き換え、DCountでエラーが表示されるようになりました。私は 'ケース'と一緒に持っていたのと同じエラーを受け取りました、 'DCount'と今.. –

関連する問題