如何解决SQL返回SQL作为结果如何运行返回的SQL?
使用交叉表方法动态旋转建议here的hstore。有什么方法可以立即运行返回的sql,还是有一种方法可以调用原始交叉表,然后运行sql作为唯一结果而不是运行两个查询来返回数据透视表?
所以当我运行此查询
SELECT format(
$s$SELECT * FROM crosstab(
$$SELECT h.id,kv.*
FROM hstore_test h,each(hstore_col) kv
ORDER BY 1,2$$,$$SELECT unnest(%L::text[])$$
) AS t(id int,%s text);
$s$,array_agg(key) -- escapes strings automatically,string_agg(quote_ident(key),' text,') -- needs escaping!
) AS sql
FROM (
SELECT DISTINCT key
FROM hstore_test,skeys(hstore_col) key
ORDER BY 1
) sub;
它返回如下结果:
SELECT * FROM crosstab(
$$SELECT h.id,kv.*
FROM hstore_test h
LEFT JOIN LATERAL each(hstore_col) kv ON TRUE
ORDER BY 1,$$SELECT unnest('{key1,key2,key3}'::text[])$$
) AS t(id int,key1 text,key2 text,key3 text);
我想做的是使用函数或第一个查询周围的另一个查询。返回第二个查询的结果,并使用返回的数据构建实例化视图
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。