首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何添加分组和不重复的列?

如何添加分组和不重复的列?
EN

Stack Overflow用户
提问于 2019-01-23 03:05:54
回答 1查看 42关注 0票数 0

我现在有一个数据集,每一行都应该表示一个项目的危险代码。有些物品有相同的危险代码多次,因为它代表不同的描述内的货物。

我的目标是将下面的数据集转换为每个不同的gkey,但是在gkey的行中有其各自的和不同的imdg_class值:

目前的数据结果:

因此,在gkey = 4524111的情况下,我希望imdg_class3, 8

注意:imdg_class列有以下不同的值列表

1.1B

1.1C

1.1D

1.2C

1.2E

1.2G

1.3C

1.3G

1.4B

1.4C

1.4G

1.4S

1.5D

2.1

2.2

2.3

3

4.1

4.2

4.3

5.1

5.2

6.1

6.2

7

8

9

我很感激任何人能提供的帮助。

编辑:

我的版本如下:

Microsoft SQL Server Management Studio 14.0.17213.0

Microsoft Analysis Services Client Tools 14.0.1016.232

Microsoft Data Access Components (MDAC) 10.0.16299.15

Microsoft MSXML 3.0 4.0 6.0

Microsoft Internet Explorer 9.11.16299.0

Microsoft .NET Framework 4.0.30319.42000

Operating System 6.3.16299

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-23 03:37:06

一般来说,数据库支持某种类型的字符串聚合功能。例如,它在group_concat()中被称为MySQL,您只需这样做:

代码语言:javascript
复制
select gkey,
       group_concat(distinct imdg_class)
from t
group by gkey;

在Postgres中,函数是string_agg()。在Server中也是如此。在甲骨文中,它被称为listagg() --但不幸的是,它不会删除重复项,因此需要一个子查询。

Server中的string_agg()可在Server 2017+中使用。在此之前,您可以使用XML版本:

代码语言:javascript
复制
select gkey,
       stuff( (select distinct ',' + imdg_class
               from t t2
               where t2.gkey = t.gkey
               for xml path('')
              ), 1, 1, ''
            )
from (select distinct gkey from t) t;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54319476

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档