Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.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 使用动态列将两个具有多行的表连接到一行_Sql_Postgresql - Fatal编程技术网

Sql 使用动态列将两个具有多行的表连接到一行

Sql 使用动态列将两个具有多行的表连接到一行,sql,postgresql,Sql,Postgresql,我试图为表1中的每个用户将两个表连接到一行中,但表2中有多个简单但动态的字段需要追加 给出两个表格: 使用者 用户ID 用户名 U1 约翰 挑选* 来自用户 左连接选择用户\u ref\u id、数组\u到\u jsonarray\u aggextradata.DYNAMIC\u EXTRA\u字段作为额外\u数据 来自外部数据 按用户分组\u ref\u id extra on extra.user\u ref\u id=user.user\u id 将产生: 用户id 用户名 额外数据 U1

我试图为表1中的每个用户将两个表连接到一行中,但表2中有多个简单但动态的字段需要追加

给出两个表格: 使用者 用户ID 用户名 U1 约翰 挑选* 来自用户 左连接选择用户\u ref\u id、数组\u到\u jsonarray\u aggextradata.DYNAMIC\u EXTRA\u字段作为额外\u数据 来自外部数据 按用户分组\u ref\u id extra on extra.user\u ref\u id=user.user\u id 将产生:

用户id 用户名 额外数据 U1 约翰 [你有工作,有出色的薪水,喜欢猫]
我找不到一个接受动态输入的解决方案,因为这是不可能的。SQL的一个基本限制是,在启动查询之前,引擎必须知道所有列的数量、名称和数据类型。在查询结果中动态添加列是不可能的,因为这些列是由结果本身决定的。聚合到JSON对象可能是另一种选择?SQL具有静态的结果列数。替代的解决方案通常包括生成一个包含您所需的所有动态数据的列,您可以使用:1一个简单的VARCHAR或CLOB,2一个XML文档,3一个JSON文档,等等。在我的例子中,JSON对象聚合是一个可接受的解决方案