[英]How to concatenate all entries returned by a joined subquery (related to the main table id) into a single combined column?
Let's say I have a main driver table called Employee
with the following data and columns: 假设我有一个名为
Employee
的主驱动程序表,其中包含以下数据和列:
EMPLOYEE_ID EMPLOYEE_NAME EMPLOYEE_CAR EMPLOYEE_AGE
----------------------------------------------------------------
1 Mike Camry 35
2 Mark Civic 33
3 Helen Beetle 25
And I have another table called Employee_Feedback
with the following data and columns: 我还有一个名为
Employee_Feedback
表,其中包含以下数据和列:
EMPLOYEE_FEEDBACK_ID EMPLOYEE_ID FEEDBACK_COMMENT_TX
---------------------------------------------------------------
1 1 Very Good
2 1 Average
3 1 Phenomenal
4 2 Okay
5 2 NO Comment
6 3 Excellent
7 3 Hilarious
With the data from the Employee
and Employee_Feedback
tables, I want my query to be able to return all of the rows in Employee and also to concatenate all of the 'related' employee feedback_comments from Employee_feedback
into a single column per employee. 从数据
Employee
和Employee_Feedback
表,我想我的查询能够返回所有行的员工,也给所有从“相关”员工feedback_comments的串联Employee_feedback
到每名员工的一列。 It would look like this: 它看起来像这样:
EMPLOYEE_NAME EMPLOYEE_CAR EMPLOYEE_AGE Comments
------------------------------------------------------------------------
Mike Camry 35 Very Good Average Phenomenal
Mark Civic 33 Okay No Comment
Helen Beetle 25 Excellent Hilarious
What would be a good query to do this? 什么是一个很好的查询来做到这一点? I've tried the following with no success:
我已经尝试了以下方法,但均未成功:
select employee_name
, employee_car
, employee_age
, listagg(feedback_comment_Tx, ' ') within group (order by e.employee_id)
from employee e
join employee_feedback ef ON ef.employee_id = e.employee_id;
Am I missing a minor detail? 我是否缺少细节? Thanks in advance!
提前致谢!
You need to add a group by
clause at the end : 您需要在最后添加一个
group by
子句:
group by employee_name, employee_car, employee_age
Edit : including your filters in the comment, you may try the following : 编辑:在评论中包含过滤器,您可以尝试以下操作:
select employee_name
, employee_car
, employee_age
, listagg(feedback_comment_Tx, ' ') within group (order by e.employee_id)
from employee e
join employee_feedback ef ON ef.employee_id = e.employee_id
where nvl(initcap(feedback_comment_Tx),'No Comment') != 'No Comment'
group by employee_name, employee_car, employee_age;
Have you tried to add group by e.employee_id
at the end of query like that 您是否试图在查询末尾
group by e.employee_id
添加group by e.employee_id
select employee_name
, employee_car
, employee_age
, listagg(feedback_comment_Tx, ' ') within group (order by e.employee_id)
from employee e join employee_feedback ef ON ef.employee_id = e.employee_id
group by e.employee_id
select employee_name
, employee_car
, employee_age
, listagg(feedback_comment_Tx, ' ') within group (order by ef.EMPLOYEE_FEEDBACK_ID)
from employee e
join employee_feedback ef ON ef.employee_id = e.employee_id
group by e.employee_id;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.