将缩写字符串转移到详细信息sql

时间:2016-04-09 02:41:08

标签: sql oracle oracle-analytics

我有一个表有两个字符串user_id和user_activities_type。 进出口。

'John',   '23Lqv'
'Mike', '159pLv3'

user_activities_type中的每个单词都有自己的含义,如

2-> take math lessons
3 -> take english lessons
L -> take chemical lessons

我想要的结果是

'John' ,'math,english,chemical'
'Mike','history,english,painting'

无论如何都是通过sql制作它?

提前致谢!

1 个答案:

答案 0 :(得分:0)

你有一个非常非常糟糕的数据结构。我建议您使用每个用户和每个活动一行更改它,以及活动表。这是一种更典型的规范化数据模型,更适合于关系数据库。

但是,你可以这样做:

select user_id,
       concat_ws(',',
                 (case when user_activities_type like '%1%' then 'history' end),
                 (case when user_activities_type like '%2%' then 'math' end),
                 (case when user_activities_type like '%3%' then 'english' end),
                 . . .
                )
from t;

编辑:

糟糕!我没有意识到这是甲骨文。

select user_id,
       substr(',' || (case when user_activities_type like '%1%' then 'history' end) ||
              ',' || (case when user_activities_type like '%2%' then 'math' end) ||
              ',' || (case when user_activities_type like '%3%' then 'english' end)
                 . . .
               2)
from t;