如何在sql中重复值时对列进行分组
我连接我的Access数据库到一个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
那可能吗?
欣赏你的答案!
谢谢。
这不能是SQL查询的结果,查询将显示与“颜色”字段相关联的“ID”和“名称”字段中的值(如果存在)。 此外,在查询结果中,没有任何关联蓝色和比尔而不是Jhon 。
如果您的目标是在Excel中显示,您可以使代码通过Cols ID和NAME从下到上运行,并删除与上述单元格值相等的单元格。
在这里,你去…没有不可能的..
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
谢谢
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
尝试这个