Sql 选项以满足我的要求,因为我有动态类别字符串,其大小不是预定义的类别列表可能在单独的行中。一旦我完成查询,我会更新我的答案。@RaviPatel你只需要知道可能的最高选项数并相应地更新,我认为你可以接受这个答案,看起来很棒!看起来很棒! Table_Id |
Sql 选项以满足我的要求,因为我有动态类别字符串,其大小不是预定义的类别列表可能在单独的行中。一旦我完成查询,我会更新我的答案。@RaviPatel你只需要知道可能的最高选项数并相应地更新,我认为你可以接受这个答案,看起来很棒!看起来很棒! Table_Id |,sql,split,amazon-redshift,Sql,Split,Amazon Redshift,选项以满足我的要求,因为我有动态类别字符串,其大小不是预定义的类别列表可能在单独的行中。一旦我完成查询,我会更新我的答案。@RaviPatel你只需要知道可能的最高选项数并相应地更新,我认为你可以接受这个答案,看起来很棒!看起来很棒! Table_Id | Categories | Value <ID> | ABC1; ABC1-1; XYZ | 10 <ID> | ABC1; ABC1-2; XYZ | 15 <ID>
选项以满足我的要求,因为我有动态类别字符串,其大小不是预定义的类别列表可能在单独的行中。一旦我完成查询,我会更新我的答案。@RaviPatel你只需要知道可能的最高选项数并相应地更新,我认为你可以接受这个答案,看起来很棒!看起来很棒!
Table_Id | Categories | Value
<ID> | ABC1; ABC1-1; XYZ | 10
<ID> | ABC1; ABC1-2; XYZ | 15
<ID> | XYZ | 5
.....
Table_Id | Categories | Value
<ID> | ABC1 | 25
<ID> | ABC1-1 | 10
<ID> | ABC1-2 | 15
<ID> | XYZ | 30
.....
WITH
values as (
select distinct category
from (
select distinct split_part(categories,';',1) as category from your_table
union select distinct split_part(categories,';',2) from your_table
union select distinct split_part(categories,';',3) from your_table
)
where nullif(category,'') is not null
)
SELECT
t2.category
,sum(t1.value)
FROM your_table t1
JOIN values t2
ON split_part(categories,';',1)=t2.category
OR split_part(categories,';',2)=t2.category
OR split_part(categories,';',3)=t2.category
select row_number() over(order by 1) as r1,
to_char(timestamptz 'epoch' + date_time * interval '1 second', 'yyyy-mm-dd') AS DAY,
split_part(categories, ';', numbers.n) as catg,
value
from <TABLE>
join numbers
on numbers.n <= regexp_count(category_string, ';') + 1 <OTHER_CONDITIONS>