首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将多行分组为单行

将多行分组为单行
EN

Stack Overflow用户
提问于 2017-10-02 20:58:29
回答 2查看 5.4K关注 0票数 3

我有下表:

代码语言:javascript
复制
|  ID  |  Description|  Shelf  |  QTY  |
----------------------------------------
|  10  | Apples      |    1    |   24  |
|  10  | Apples      |    2    |   28  |
|  10  | Apples      |    6    |   12  |
|  15  | Oranges     |    2    |   8   |
|  15  | Oranges     |    6    |   33  |

我需要对这个表做一些更新,并将Shelf和QTY作为一个组放在一起,如下所示:

代码语言:javascript
复制
|  ID  |  Description|    Availability    |
-------------------------------------------
|  10  | Apples      |  1-24, 2-28, 6-12  |
|  15  | Oranges     |  2-8, 6-33         |

基本上,我们试图将货架和QTY组合成一行。这只是为了报告的目的,所以我必须以这种方式显示数据。

到目前为止,我能够通过连接这两列并添加破折号来显示它们:

代码语言:javascript
复制
SELECT ID, Description, Shelf || '-' || QTY AS Availability FROM tbl_Products

要将它们插入到一行中,我非常肯定可以使用WHILE循环循环遍历值,并在将其插入临时表之前创建可用性字符串字段,然后将其打印到报表中。

但我对演出不太确定。由于这个查询将在一个大表中运行,我只是担心它会在每次拉出报表时减慢数据库的速度。

还有其他更简单的方法可以做到这一点吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-10-02 21:05:08

string_agg将完全符合以下要求:

代码语言:javascript
复制
SELECT   id, description, STRING_AGG(shelf || '-' || qty, ', ') AS Availability
FROM     tbl_Products
GROUP BY id, description
票数 6
EN

Stack Overflow用户

发布于 2017-10-02 21:05:22

您可以使用string_agg()

代码语言:javascript
复制
select id, description,
       string_agg( shelf || '-' || qty, ', ') as availability
from t
group by id, description;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46533627

复制
相关文章

相似问题

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