【发布时间】:2020-05-03 01:16:25
【问题描述】:
我可以做一些我不知道该怎么做的事情。我有一个简单的查询,需要汇总和压缩。这是基本脚本:
select t.serial, t.make, t.model, t.upgrade_date, t.software_version
FROM table t
Order by t.serial
这些是经过软件升级(最多 3 次)的电子设备。当然,上面的脚本将为同一设备提供多行,但软件版本不同,而品牌和型号保持不变。我了解如何使用 max 将其聚合到一行,例如,显示最新的软件版本。但是,我需要的是聚合并有一个精简的列,显示设备所在的每个软件版本(按顺序)。
它可能看起来像这样:
+------------------------------------------+
| Serial | Make | Model | Version_history |
+------------------------------------------+
| A Terra 1 1.1, 1.9, 2.1 |
+------------------------------------------+
或者,如果设备处于该版本,则最好将每个 software_version 显示为带有“upgrade_date”的列标题。实际上,了解这两种方法会很有用。
这可能看起来像这样:
+------------------------------------------------------------------------+
| Serial Make Model 1.1 1.9 2.1 2.3 |
+------------------------------------------------------------------------+
| A Terra 1 01-Jan-2019 17-Jun-2019 31-Dec-2019 |
+------------------------------------------------------------------------+
毫无疑问,这真的很简单,但我终其一生都无法弄清楚。
【问题讨论】:
-
使用
listagg()可以轻松实现第一个输出 -
太棒了。那很简单。谢谢。
标签: sql oracle select sql-order-by