加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

postgresql – redshift – 如何将listagg与information_schema.

发布时间:2020-12-13 16:17:20 所属栏目:百科 来源:网络整理
导读:我正在使用redshift,并希望创建一个以逗号分隔的列列表.我正在尝试使用listagg从信息模式中获取列名: SELECT listagg(column_name,',') within group (order by ordinal_position) FROM information_schema.columnsWHERE table_schema = 'my_schema'AND tab
我正在使用redshift,并希望创建一个以逗号分隔的列列表.我正在尝试使用listagg从信息模式中获取列名:
SELECT  
listagg(column_name,',') within group (order by ordinal_position) 
FROM    information_schema.columns
WHERE   table_schema = 'my_schema'
AND     table_name = 'my table';

我收到以下错误:

[Amazon](500310) Invalid operation: Function (listagg(text,text)) must be applied on at least one user created tables;
虽然这不能回答如何在information_schema上应用listagg,但我可以推荐另一种在pg目录表上使用listagg的方法.

试试这个:

SELECT DISTINCT listagg(attname,') WITHIN GROUP (ORDER BY a.attsortkeyord) AS "columns"
FROM pg_attribute a,pg_namespace ns,pg_class c,pg_type t,stv_tbl_perm p,pg_database db
WHERE t.oid=a.atttypid AND a.attrelid=p.id AND ns.oid = c.relnamespace AND db.oid = p.db_id AND c.oid = a.attrelid
AND typname NOT IN ('oid','xid','tid','cid')
AND ns.nspname = 'my_schema'
AND RTRIM(name) = 'my table'

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读