【问题标题】:Agregate rows in Oracle SQL statementOracle SQL 语句中的聚合行
【发布时间】:2010-04-19 12:14:35
【问题描述】:

我有一个以这种方式存储的项目表:

A1 | B1
A1 | B2
A1 | B3
A2 | B1
A2 | B4
...

我需要使用 SQL 查询进行检索:

A1 | B1, B2, B3
A2 | B1, B4
...

【问题讨论】:

标签: sql oracle


【解决方案1】:

如果你有 11g Release 2,你可以使用Listagg

Select a, Listagg(b, ', ') Within Group ( Order By b )
From t
Group By a

它允许对你的值进行排序,并且它已经与 Oracle 一起提供:

A1  B1, B2, B3
A2  B1, B4

否则,您可以使用Tom Kyte 中的stragg 函数,如Rows to String 中所述。

Select a, stragg(b)
From t
Group By a

返回

A1  B1,B3,B2
A2  B1,B4

【讨论】:

  • 彼得,如果 OP 在 11gR2 上,他们可以使用 LISTAGG 吗?
  • 可惜我没有11g
  • 感谢彼得问候伊恩的澄清
【解决方案2】:
SELECT *
FROM `table1`
ORDER BY `afield` ASC

这样使用

【讨论】:

  • 抱歉,我看不出这有什么帮助?
猜你喜欢
  • 1970-01-01
  • 2014-11-16
  • 1970-01-01
  • 2013-05-11
  • 1970-01-01
  • 2021-05-22
  • 1970-01-01
  • 2012-07-03
  • 1970-01-01
相关资源
最近更新 更多