微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

plpgSQL函数循环和string_agg

如何解决plpgSQL函数循环和string_agg

我提出了以下循环,它是函数的一部分。该循环实现以下目的: 第一行是名称和年份 以下几行是电影及其角色。 如果他/她只有一个角色,那么这很简单。

在第二种情况下,Graham在同一部电影中有3个字符。我知道我需要使用string_agg来执行此操作,但是我不确定如何在此处循环执行以达到所需的结果,如下所示。请帮助我进行此编码。

loop
    if counter = 0 then
        return next concat(_result.name,' (',_result.year_born,'-',_result.year_died,')');
    end if;
    return next _result.title || ' (' || _result.year_made || ') ' || 'as ' || _result.character;
    counter = counter + 1;
end loop;

从q12('marlon brando')中选择*;


马龙·白兰度(1924-2004) 名为Desire的有轨电车(1951),名字叫Stanley Kowalski 在海滨(1954)饰演Terry Malloy 教父(1972)作为唐·维托·科里昂(Don Vito Corleone) 《现代启示录》(1979年)饰演Walter E.Kurtz上校 黑暗之心:电影制片人的示录(1991) (6行)

从q12中选择*(“格雷厄姆·查普曼”);


格雷厄姆·查普曼(1941-1989) 蒙蒂·蟒蛇与圣杯(1975)饰演亚瑟王,上帝之声中头 (2行)

这是格雷厄姆·查普曼的理想结果。 矿井代码具有以下结果:

从q12中选择*(“格雷厄姆·查普曼”);


格雷厄姆·查普曼(1941-1989) 蒙蒂·蟒蛇与圣杯(1975)饰演亚瑟王 蒙蒂·蟒和圣杯(1975):上帝之声 蒙蒂·蟒蛇和圣杯(1975):中尉 (4行)

select title,string_agg(character,',' order by character)
                from people p1
                join plays p2
                on p1.id = p2.person_id
                join movies m
                on p2.movie_id = m.id
                where name ilike 'Graham Chapman'
                group by title;
          title              |              string_agg              

蒙蒂巨蟒与圣杯|亚瑟王中头上帝之音 (1行)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。