Pivot for redshift database

后端 未结 4 576
自闭症患者
自闭症患者 2021-01-04 02:02

I know this question has been asked before but any of the answers were not able to help me to meet my desired requirements. So asking the question in new thread

In r

4条回答
  •  粉色の甜心
    2021-01-04 02:31

    If you will typically want to query specific subsets of the categories from the pivot table, a workaround based on the approach linked in the comments might work.

    You can populate your "pivot_table" from the original like so:

    insert into pivot_table (id, Name, json_cats) (
        select id, Name,
            '{' || listagg(quote_ident(Category) || ':' || count, ',')
                   within group (order by Category) || '}' as json_cats
        from to_pivot
        group by id, Name
    )
    

    And access specific categories this way:

    select id, Name,
        nvl(json_extract_path_text(json_cats, 'Snacks')::int, 0) Snacks,
        nvl(json_extract_path_text(json_cats, 'Beer')::int, 0) Beer
    from pivot_table
    

    Using varchar(max) for the JSON column type will give 65535 bytes which should be room for a couple thousand categories.

提交回复
热议问题