Sql 使用动态列将两个具有多行的表连接到一行
我试图为表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 使用动态列将两个具有多行的表连接到一行,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
我找不到一个接受动态输入的解决方案,因为这是不可能的。SQL的一个基本限制是,在启动查询之前,引擎必须知道所有列的数量、名称和数据类型。在查询结果中动态添加列是不可能的,因为这些列是由结果本身决定的。聚合到JSON对象可能是另一种选择?SQL具有静态的结果列数。替代的解决方案通常包括生成一个包含您所需的所有动态数据的列,您可以使用:1一个简单的VARCHAR或CLOB,2一个XML文档,3一个JSON文档,等等。在我的例子中,JSON对象聚合是一个可接受的解决方案