我有一个存储MARC21数据按字段分解的Oracle表:如何使用LISTAGG清理此报告?
doc_number |字段|文字
我在SQL Fiddle创建了一个示例表。数据本身被大大简化(为6条,我只包括相关领域,所有这6都可能20-30行长在实际的数据)。
我需要从基于其他一些参数的这个表,汇总到一个行提取的特定字段,并消除这个地方聚集文本包含一个关键的词或短语行(“抑制显示”)。使用在SQL小提琴设置的查询,我得到我不想行一式三份(以“抑制显示”的那些)。如果我使用WHERE子句来消除包含文本(WHERE field = '902' AND text LIKE 'Suppress'
)这一特定领域,只是缩短了聚合的文字和我只得到双倍的线,而不是三倍。
查询:
SELECT doc_number,
LISTAGG(field || '=' || text, '; ') WITHIN GROUP (ORDER BY field) OVER (PARTITION BY doc_number)
FROM record
所以答:我该如何消除与LISTAGG一式三份上市行?和B:我可以如何(如果可能)限制基于汇总文本的查询?
这工作。我不知道为什么我没有考虑父查询。我也可以在父查询中轻松使用WHERE。谢谢! – 2014-09-30 16:01:16