在这种oracle情况下,如何在单个查询中获得以下结果?
Table 1
Customer | Order_Number
1 1
1 2
2 1
Table 2
Customer | Order_Number | Employee | Tag
1 1 Bob on hold
1 1 Larry shipped
1 2 Larry shipped
Results
Customer | Order_Number | Tags
1 1 Bob - on hold; Larry - shipped
1 2 Larry - shipped;
2 1 (Empty or null)
我将标签作为单个字符串返回时被绊倒了。
答案 0 :(得分:1)
您需要LISTAGG。
如果您的Oracle版本足够老,可以将其替换为user-defined aggregate function,WM_CONCAT或SYS_CONNECT_BY_PATH。
答案 1 :(得分:1)
您尚未提及DB version
。所以答案完全取决于你的版本。
如果您在11g
及以上,请使用LISTAGG
。
但是,如果您处于pre 11g
版本,那么您有以下选项:
注意:从不在生产系统中使用WM_CONCAT
,它没有记录。只需将SR提升为Oracle支持并说您已使用它,并查看响应。它并不存在于12c
。
此处有更多示例http://www.oracle-base.com/articles/misc/string-aggregation-techniques.php