我有下表:
| 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 |基本上,我们试图将货架和QTY组合成一行。这只是为了报告的目的,所以我必须以这种方式显示数据。
到目前为止,我能够通过连接这两列并添加破折号来显示它们:
SELECT ID, Description, Shelf || '-' || QTY AS Availability FROM tbl_Products要将它们插入到一行中,我非常肯定可以使用WHILE循环循环遍历值,并在将其插入临时表之前创建可用性字符串字段,然后将其打印到报表中。
但我对演出不太确定。由于这个查询将在一个大表中运行,我只是担心它会在每次拉出报表时减慢数据库的速度。
还有其他更简单的方法可以做到这一点吗?
发布于 2017-10-02 21:05:08
string_agg将完全符合以下要求:
SELECT id, description, STRING_AGG(shelf || '-' || qty, ', ') AS Availability
FROM tbl_Products
GROUP BY id, description发布于 2017-10-02 21:05:22
您可以使用string_agg()
select id, description,
string_agg( shelf || '-' || qty, ', ') as availability
from t
group by id, description;https://stackoverflow.com/questions/46533627
复制相似问题