2016-04-22 8 views
7

के साथ listagg का उपयोग कैसे करें मैं redshift का उपयोग कर रहा हूं और कॉलम की अल्पविराम से अलग सूची बनाना चाहता हूं।redshift - info_schema.columns तालिका

SELECT 
listagg(column_name,',') within group (order by ordinal_position) 
FROM information_schema.columns 
WHERE table_schema = 'my_schema' 
AND  table_name = 'my table'; 

मैं निम्न त्रुटि हो रही है:: मैं listagg का उपयोग कर जानकारी स्कीमा से स्तंभ नाम हड़पने के लिए कोशिश कर रहा हूँ उत्तर नहीं मिलता है कैसे INFORMATION_SCHEMA पर listagg लागू करने के लिए

[Amazon](500310) Invalid operation: Function (listagg(text,text)) must be applied on at least one user created tables; 

उत्तर

1

इस हालांकि, मैं इसके बजाय पीजी कैटलॉग टेबल पर 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' 
संबंधित मुद्दे