我是Oracle BI的用户(v.11.1.1.7.141014)。我有一个文本列“description”,并希望为该列中的所有单词创建一个包含单词count的新表。例如:
来源:
Description
___________
This is a test
Just a test
结果:
Word Count
_____________
a 2
test 2
is 1
just 1
this 1
有可能吗?我有一个用户帐户,(没有管理功能),但我可以处理报告(表,数据透视表等),数据结构,自定义SQL查询(仅限报告和数据结构)等等......
提前致谢
答案 0 :(得分:1)
将“单词”定义为一个或多个连续英文字母(大写或小写)的任何序列,并假设“this”和“This”相同,这里有一个可能的解决方案。代码的第一行以“... from a”结尾,“用你的表名替换”a“(为了我自己的测试目的,我创建了一个包含输入数据的表,我称之为a)。 / p>
with b (d, ct) as (select Description, regexp_count(Description, '[a-zA-Z]+') from a),
h (pos) as (select level from dual connect by level <= 100),
prep (word) as (select lower(regexp_substr(d, '[a-zA-Z]+', 1, pos)) from b, h where pos <= ct)
select word, count(word) as word_count
from prep
group by word
order by word_count desc, word
/
解决方案需要事先知道每个输入字符串的最大字数;我使用100,可以增加(在第二行代码中h的定义)。