簡體   English   中英

如何將由聯接的子查詢(與主表ID相關)返回的所有條目串聯到單個組合列中?

[英]How to concatenate all entries returned by a joined subquery (related to the main table id) into a single combined column?

假設我有一個名為Employee的主驅動程序表,其中包含以下數據和列:

 EMPLOYEE_ID    EMPLOYEE_NAME      EMPLOYEE_CAR     EMPLOYEE_AGE
 ----------------------------------------------------------------
     1          Mike               Camry                35          
     2          Mark               Civic                33
     3          Helen              Beetle               25

我還有一個名為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

從數據EmployeeEmployee_Feedback表,我想我的查詢能夠返回所有行的員工,也給所有從“相關”員工feedback_comments的串聯Employee_feedback到每名員工的一列。 它看起來像這樣:

 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

什么是一個很好的查詢來做到這一點? 我已經嘗試了以下方法,但均未成功:

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子句:

group by employee_name, employee_car, employee_age

編輯:在評論中包含過濾器,您可以嘗試以下操作:

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;

您是否試圖在查詢末尾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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM