sql - 如何根据相似的 id 将同一列中的值组合到一个新列中
问题描述
所以现在,我有一个表 baseoil,其中包括一个描述列、一个从描述列解析数据的子字符串列和一个 ID 列。我想根据行的 ID 将子字符串中的解析值组合到一个新列中,同时保留没有重复 ID 的数据。例如:
Description |Substring |ID |
---------------------|-----------|-------|
100 GALLONS OF SN5484|100 GALLONS|8330780|
---------------------|-----------|-------|
100 GALLONS OF SN5484|SN5484 |8330780|
---------------------|-----------|-------|
25 LITERS OF TY50000 |TY50000 |7545215|
我希望新行看起来像这样:
Description |Substring |ID |Combined |
---------------------|-----------|-------|------------------|
100 GALLONS OF SN5484|100 GALLONS|8330780|100 GALLONS SN5484|
---------------------|-----------|-------|------------------|
100 GALLONS OF SN5484|SN5484 |8330780|100 GALLONS SN5484|
---------------------|-----------|-------|------------------|
25 LITERS OF TY50000 |TY50000 |7545215|TY50000 |
我该怎么做呢?
解决方案
用作string_agg()
窗口函数:
select bo.*,
string_agg(substring order by ?, ' ') over (partition by id) as combined
from baseoil bo;
?
用于指定排序的列。否则,可以以任意顺序组合子字符串。
推荐阅读
- elasticsearch - 根据消息字段的内容过滤日志
- c# - 在 Web 服务中返回图像
- dart - 如何更新以 Backdrop 作为主应用程序菜单的 Flutter 应用程序的布局
- android - ionic cordova 资源似乎不适用于 Bitrise
- python - LXML:获取标题/顶级注释
- javascript - 在同一行中分配变量和更改属性
- c# - 如何在其他脚本的任何其他函数中调用包含参数的函数?
- excel - 我想使用按钮自动更新 cel whitout 中的列表框值
- python - from sklearn.model_selection import train_test_split 和 from sklearn.cross_validation import train_test_split 有什么区别
- php - 使用 MySQL LIKE 参数在表上搜索