gpt4 book ai didi

sql - 将多行分组为单行

转载 作者:行者123 更新时间:2023-11-29 11:40:08 24 4
gpt4 key购买 nike

我有下表:

|  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 作为一个组放在一起,如下所示:

|  ID  |  Description|    Availability    |
-------------------------------------------
| 10 | Apples | 1-24, 2-28, 6-12 |
| 15 | Oranges | 2-8, 6-33 |

基本上,我们试图将货架和数量组合在一行中。这仅用于报告目的,因此我必须以这种方式显示数据。

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

SELECT ID, Description, Shelf || '-' || QTY AS Availability FROM tbl_Products

为了将它们拼接在一行中,我很确定我可以使用 WHILE 循环遍历这些值并创建 Availability 字符串字段,然后将其插入到临时表中,然后将其打印到报告中.

但我对性能不太确定。由于此查询将在一个大表中运行,我只是担心每次提取报告时它都会减慢数据库速度。

那么有没有其他更简单的方法可以实现这一点?

最佳答案

string_agg 完全符合要求:

SELECT   id, description, STRING_AGG(shelf || '-' || qty, ', ') AS Availability
FROM tbl_Products
GROUP BY id, description

关于sql - 将多行分组为单行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46533627/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com