sql - 在 Oracle SQL 中对行进行分组以实现唯一 ID
问题描述
我在 SQL 表中有以下行
Col1 Col2 Col3 Col4
CABA B08 3 0000000000017
BA A06 4 0000000000018
CABA B08 3 0000000000018
CABA B06 1.5 0000000000019
BA A07 5 0000000000021
CABA B04 0.5 0000000000021
结果,我想对常见的 Col4 进行分组并创建 ID ColD,如下所示
Col1 Col2 Col3 Col4 Col5
CABA B08 3 0000000000017 ARB08
BA A06 4 0000000000018 ARA06B08
CABA B08 3 0000000000018 ARA06B08
CABA B06 1.5 0000000000019 ARB06
BA A07 5 0000000000021 ARA07B04
CABA B04 0.5 0000000000021 ARA07B04
有没有办法我们可以使用 Oracle SQL 来实现这一点
解决方案
您可以listagg()
用作窗口函数:
select
t.*,
'AR' || listagg(col2, '')
within group(order by col2)
over(partition by col4) col5
from mytable t
COL1 | COL2 | COL3 | COL4 | COL5 :--- | :--- | ---: | ---: | :-------- 卡巴 | B08 | 3 | 17 | ARB08 文学士 | A06 | 4 | 18 | ARA06B08 卡巴 | B08 | 3 | 18 | ARA06B08 卡巴 | B06 | 1.5 | 19 | ARB06 文学士 | A07 | 5 | 21 | ARA07B04 卡巴 | B04 | .5 | 21 | ARA07B04
推荐阅读
- excel - Excel VBA循环不移动到下一行
- typescript - Typescript Generic 类和 Object.assign 看不到值
- c# - 如何访问和修改作为字典值给出的对象的属性?
- excel - 如何根据公式中的excel中的两个标准对列进行排序?
- python - 将范围更改为调用环境
- django - 如何让人们在我的网站上下载文件?
- html - mat-button-toggle-checked with dynamic style + Angular 6
- sql - 重复存储相同的行是否被认为是不好的做法?
- python - 重塑 LSTM 自动编码器的输入数据
- asp.net-mvc - 找不到 blazor.server.js 文件