嗨,我有一个要求。我的表格中有以下数据。
ID REASON FLIGHT_KEY_ID FLIGHT_NO
1709 abcddf 0201_03/02/2016_MCT_BOM 201
1704 Jump Seats 0201_03/02/2016_MCT_BOM 201
1706 Others 0201_03/02/2016_MCT_BOM 201
1717 Last minute immigration 0225_28/04/2016_MCT_COK 225
1716 Last minute immigration 0225_28/04/2016_MCT_COK 225
1705 Last minute immigration 0225_28/04/2016_MCT_COK 225
结果应为
REASON FLIGHT_KEY_ID FLIGHT_NO
abcddf,Jump Seats,Jump Seats 0201_03/02/2016_MCT_BOM 201
Last minute immigration 0225_28/04/2016_MCT_COK 225
我知道这可能吗?任何帮助,将不胜感激。谢谢。
答案 0 :(得分:3)
您可以使用LISTAGG
注意:ListAgg
仅适用于oracle 11g版;对于旧版本,请参阅xQbert
answer;
尝试;
select
LISTAGG(reason, ',') WITHIN GROUP (ORDER BY FLIGHT_NO) reason,
FLIGHT_KEY_ID,
FLIGHT_NO
from my_table
group by FLIGHT_KEY_ID, FLIGHT_NO
如果您只想distinct
reasons
,那么
select
LISTAGG(reason, ',') WITHIN GROUP (ORDER BY FLIGHT_NO) reason,
FLIGHT_KEY_ID,
FLIGHT_NO
from (
select
distinct reason,
FLIGHT_KEY_ID,
FLIGHT_NO
from my_table
)
group by FLIGHT_KEY_ID, FLIGHT_NO
答案 1 :(得分:2)
Listagg可能在您的版本中不可用。早期版本的Oracle提供了wm_concat作为未记录的功能。 (使用风险自负,并注意它不在升级路径上(在12c中不存在))
SELECT
wm_Concat(distinct reason) reason,
FLIGHT_KEY_ID,
FLIGHT_NO
FROM my_table
GROUP BY FLIGHT_KEY_ID, FLIGHT_NO
问汤姆: https://asktom.oracle.com/pls/apex/f?p=100:11:0::::P11_QUESTION_ID:9529613900346315631