函数crosstab(未知,未知)不存在,但确实存在

时间:2019-03-18 21:26:50

标签: postgresql pivot crosstab

我有一个交叉表函数,该函数过去已经成功使用过很多次,但是现在它会将所有数据转储到最后,而不是将其转入输出表中。似乎找不到Crosstab。我已经对其进行了以下研究;

  • 创建扩展名(如果不存在)tablefunc; ---答案是:扩展名“ tablefunc”已经存在
  • 使用架构动物创建扩展tablefunc;答案是:如上所述
  • 从information_schema.routines中选择count(*),其中例程名类似于'crosstab%'; ----答案是6。

以下是功能代码的一部分: 开始 str:='“”文本,'; -A1单元格中的空白

FOR REC IN SELECT DISTINCT col_name         来自an_in_tbl         ORDER BY col_name     环     str:= str || '“'|| rec.col_name ||'”文字'||',';     结束循环;

str:= substring(str, 0, length(str));

EXECUTE 'CREATE EXTENSION IF NOT EXISTS tablefunc;
DROP TABLE IF EXISTS an_out_tbl;
CREATE TABLE an_out_tbl AS
SELECT *
FROM crosstab(''select row_name, col_name, row_value from an_in_tbl order by 1'',   
             ''SELECT DISTINCT col_name FROM an_in_tbl ORDER BY 1'')
     AS final_result ('|| str ||')';

选择animal_pivot_fn()

  

注意:扩展名“ tablefunc”已存在,正在跳过   注意:表“ an_out_tbl”不存在,正在跳过   错误:函数交叉表(未知,未知)不存在   第5行:FROM交叉表('从...选择行名称,列名称,行值...                    ^   提示:没有函数匹配给定的名称和参数类型。您可能需要添加显式类型转换。   查询:如果tablefunc不存在,则创建扩展;       如果存在则删除表an_out_tbl;       创建表an_out_tbl AS       选择 *       FROM crosstab('按1的顺序从an_in_tbl中选择row_name,col_name,row_value',
                   '从an_in_tbl ORDER BY 1中选择DISTINCT col_name')            AS final_result(“”文本,“ CAT”文本,“ DOG”文本,“ SNAKE”文本,“ HORSE”文本,“ ELEPHANT”文本,“ MOUSE”文本,“ MONKEY” ...等等...这里数据记录在哪里,没有复制的表表在哪里?

0 个答案:

没有答案