我有一個存儲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