Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 选项以满足我的要求,因为我有动态类别字符串,其大小不是预定义的类别列表可能在单独的行中。一旦我完成查询,我会更新我的答案。@RaviPatel你只需要知道可能的最高选项数并相应地更新,我认为你可以接受这个答案,看起来很棒!看起来很棒! Table_Id |_Sql_Split_Amazon Redshift - Fatal编程技术网

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>