Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql pivot中的可变列数_Sql_Postgresql_Crosstab - Fatal编程技术网

Sql pivot中的可变列数

Sql pivot中的可变列数,sql,postgresql,crosstab,Sql,Postgresql,Crosstab,我有两张桌子 第一个表是字典: test_1=> select * from first; id | name ----+------- 1 | name1 2 | name2 3 | name3 参考第一个表的第二个表: 现在我使用pivot显示结果: SELECT * FROM crosstab('SELECT number, name, sum(number)::integer FROM first LEFT JOIN second ON second.f

我有两张桌子

第一个表是字典:

test_1=> select * from first;
 id | name  
----+-------
  1 | name1
  2 | name2
  3 | name3
参考第一个表的第二个表:

现在我使用pivot显示结果:

SELECT *
FROM crosstab('SELECT
  number, name, sum(number)::integer
FROM first
  LEFT JOIN second ON second.first_id = first.id
GROUP BY 2, 1
ORDER BY 1, 2', $$SELECT unnest('{name1,name2,name3}'::text[])$$) AS ta (
     number INTEGER,
     name1 INTEGER,
     name2 INTEGER,
     name3 INTEGER
     );
结果:

 number | name1 | name2 | name3 
--------+-------+-------+-------
      1 |       |     2 |     1
      2 |       |     2 |     2
      3 |       |       |     3
没关系

但现在我必须手动定义列-name1、name2、name3…,但列是可以更改的表单字典表


所以我的问题是-有没有可能让列动态地透视?

您是否考虑过返回JSON而不是本机列?当你这样做的时候,它是非常灵活的。不,我不知道这个技巧。你能举个例子吗?
 number | name1 | name2 | name3 
--------+-------+-------+-------
      1 |       |     2 |     1
      2 |       |     2 |     2
      3 |       |       |     3