我的桌子看起来像这样:
Table: table_name
name priority day hour
-------------------------------------
name1 1 monday 21:00
name2 3 tuesday 21:00
name3 1 monday 21:00
name4 2 monday 21:00
name5 2 sunday 22:00
name6 1 sunday 23:00
name7 1 thursday 00:00
name8 2 sunday 22:00
有人知道如何处理请求,然后操纵结果以汇总结果如下(当然没有列标题):
priority day hour name
-----------------------------------------------
1 monday 21:00 name1,name3
3 tuesday 21:00 name2
2 monday 21:00 name4
2 sunday 22:00 name5,name8
1 sunday 23:00 name6
1 thursday 00:00 name7
我希望按优先级和天和小时进行分组。
优先级可以是1到5 日显然可以是周一至周日 小时显然可以是任何时间:) 名称可以是任何内容。
最后,我需要一个SQL查询来将格式化的结果写入文件。
答案 0 :(得分:0)
作为ORA-01489的解决方法,您可以根据此answer
使用XMLAGG作为解决方法with extract
SET LONG 2000000
SET pagesize 50000
SELECT rtrim(xmlagg(XMLELEMENT(e,text,',').EXTRACT('//text()')
).GetClobVal(),',') very_long_text
FROM
(SELECT to_char(to_date(level,'j'), 'jsp') text FROM dual CONNECT BY LEVEL < 250
)
答案 1 :(得分:-1)
STRAGG
可能很有用
SELECT priority, day, hour, stragg(name)
FROM table_name
GROUP BY priority, day, hour
如果不够,请使用LISTAGG
SELECT priority, day, hour, LISTAGG(name, ',') WITHIN GROUP (ORDER BY name)
FROM table_name
GROUP BY priority, day, hour