我有两列包含规则和日期列表,如下所示:
a b c
--------------- -----------------------------
init, rule#062,rule#066 20210417124104,20210417132843,20210419132843 user1
init, rule#062 20210417124104,20210417132843 user2
init 20210417124104 user3
预期输出:
a b c
init 20210417124104 user1
rule#062 20210417124104 user1
rule#066 20210419132843 user1
init 20210417124104 user2
rule#062 20210417124104 user2
init 20210417124104 user3
我需要将一行更改为列中的项目数。
列表中的项目数可以不同,也不必两个。我必须在 exasol db 中运行它,所以并非所有功能都在那里工作。
谢谢 。寻求支持。
已编辑
我能够通过下面的答案为一个用户获得正确的结果,但是当我添加两个用户时,答案集会成倍增加,我认为连接依据和级别存在一些我不太了解的逻辑。
行重复,我如何从每个新用户重新开始
SELECT
u.master_user_id ,
u.user_id ,
SUBSTR(regexp_substr(u.CONS_DATE_HIST, '[^,]+', 1, level), 1, 8) as date_id ,
CASE
WHEN LOWER(trim(regexp_substr(u.CONS_RULES_HIST, '[^,]+', 1, level))) = 'init'
THEN 'init'
ELSE SUBSTR(trim(regexp_substr(u.CONS_RULES_HIST, '[^,]+', 1, level)), 6)
END AS rule_nbr,
level lvl
-- row_number() over(partition by master_user_id, level order by user_id) as rn
FROM
(
SELECT client_id,
master_user_id,
user_id,
CONS_DATE_HIST,
CONS_RULES_HIST
FROM
ECOMBI_CL_0001100.users
WHERE
cast(load_date as date) > current_date - 4
and user_id in (38043958 )
) u
connect by regexp_substr(u.CONS_DATE_HIST, '[^,]+', 1, level) <> 'null'
and regexp_substr(u.CONS_RULES_HIST, '[^,]+', 1, level) <> 'null'
-- and user_id<> user_id
-- and user_id <> user_id
-- and row_number() over(partition by master_user_id, level order by user_id) <> 2
order by 2,4
MASTER_USER_ID USER_ID DATE_ID RULE_NBR LVL
37175 38043958 20211024 init 1
37175 38043958 20211024 035 2
37175 38043958 20211024 064 3
37175 38043958 20211025 035 4
37175 38043958 20211025 060 5
有两个用户:
MASTER_USER_ID USER_ID DATE_ID RULE_NBR LVL
37175 38043958 20211024 035 2
37175 38043958 20211024 035 2
37175 38043958 20211025 035 4
37175 38043958 20211025 035 4
37175 38043958 20211025 035 4
37175 38043958 20211025 035 4
37175 38043958 20211025 035 4
37175 38043958 20211025 035 4
37175 38043958 20211025 035 4
37175 38043958 20211025 035 4
37175 38043958 20211025 060 5
37175 38043958 20211025 060 5
37175 38043958 20211025 060 5
37175 38043958 20211025 060 5
37175 38043958 20211025 060 5
37175 38043958 20211025 060 5
37175 38043958 20211025 060 5
37175 38043958 20211025 060 5
37175 38043958 20211024 064 3
37175 38043958 20211024 064 3
37175 38043958 20211024 064 3
37175 38043958 20211024 064 3
37175 38043958 20211024 init 1
968389 38052591 20211024 012 2
968389 38052591 20211024 012 2
968389 38052591 20211024 060 3
968389 38052591 20211024 060 3
968389 38052591 20211024 060 3
968389 38052591 20211024 060 3
968389 38052591 20211024 init 1
请问有什么帮助吗?