首页 > 解决方案 > 您可以将类似的行分组在一列中,但将其他列分开吗?

问题描述

我正在尝试过滤我的数据,但在 Column1 下遇到类似的行值。Column2 和 Column3 值每行不同。

| Column1 | Column2 | Column3
|---------|---------|--------
|    a    |    1    |    6
|    b    |    2    |    7
|    a    |    3    |    8
|    c    |    4    |    9
|    b    |    5    |    10

有没有办法对 Column1 值进行分组但保持 Column2 和 3 分开?Column1 顺序无关紧要。

| Column1 | Column2 | Column3
|---------|---------|--------
|    a    |    1    |    6
|         |    3    |    8
|    c    |    4    |    9
|    b    |    2    |    7
|         |    5    |    10

标签: mysql

解决方案


该脚本适用于 mysql 8

drop table if exists t;
create table t (col1 char(1), col2 int, col3 int);
insert into t values ('a',1,6);
insert into t values ('b',2,7);
insert into t values ('a',3,8);
insert into t values ('c',4,9);
insert into t values ('b',5,10);

select 
    case when col1_1 > 1 then '' else col1 end as col1
    ,col2
    ,col3
from
(
select 
    col1
    ,row_number() Over(partition by col1 order by col1) col1_1
    ,col2
    ,col3
from t
) x

推荐阅读