使用 pivot 和 in 子句将行转换为列
Posted
技术标签:
【中文标题】使用 pivot 和 in 子句将行转换为列【英文标题】:Convert rows to columns using pivot and in clause 【发布时间】:2014-11-14 22:32:01 【问题描述】:我有两张表 t1 和 t2
t1:
object_id date
123 11/10/2014
t2:
object_id employee_id
123 abc
123 xyz
123 def
456 ghi
我想将结果显示为
123 11/10/2014 abc xyz def
456 11/10/2014 ghi
即每个员工姓名的新列
如何使用 pivot 和 in 子句做到这一点?
【问题讨论】:
能否请您在 sqlfiddle.com 上创建一个示例? 嗨 Dmitry 我不熟悉 sql fiddle 您知道t2
中对于任何特定的object_id 总是最多三行吗?您如何确定如何对这三个值进行排序?是否有特殊原因需要使用 pivot
运算符?
@shady 转到 sqlfiddle.com,在顶部的菜单中选择 Oracle 11.2
,在左侧为您的表编写语句 create table
,使用您的数据填充表的 insert
语句,然后获取链接(在页面底部)并在此处写下此链接。
是否有特殊原因需要使用pivot
运算符?如果您尝试聚合未知数量的字符串,pivot
不是正确的方法。有什么实际需要您使用pivot
而不是其他技术吗?
【参考方案1】:
它不需要枢轴。您可以简单地加入您的表格并使用 listagg 函数。
this link中有一个样本。
http://www.oracle-developer.net/display.php?id=515
在您的示例中,它会像
LISTAGG(employee_id, ',') WITHIN GROUP (ORDER BY object_id) AS employees
【讨论】:
以上是关于使用 pivot 和 in 子句将行转换为列的主要内容,如果未能解决你的问题,请参考以下文章