0

我将我的 Access DB 连接到一个 Excel 文件并执行了一些简单的 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

那可能吗?

感谢您的回答!

谢谢。

4

3 回答 3

1

这不可能是 SQL 查询的结果,查询将显示与“颜色”字段关联的“ID”和“名称”字段中的值(如果存在)。此外,在查询结果中,没有将Blue关联到Bill而不是Jhon

如果您的目标是在 Excel 中显示,您可以让代码从下到上运行 Cols ID 和 NAME,并删除值等于上面单元格的单元格。

于 2016-03-31T09:14:46.847 回答
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 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

谢谢

于 2016-03-31T09:47:39.643 回答
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

尝试这个

于 2016-03-31T11:33:41.063 回答