如何从一个表中合并两个虚拟表,将一半数据分配给新列,而不会丢失数据

问题描述 投票:0回答:0

我有一个这样格式化的表格

年龄 身高 姓名
15 180 乔治
16 192 菲尔
20 148 百合
17 187 乔治
19 196 菲尔
24 147 百合
19 190 乔治
20 199 菲尔
22 148 百合
21 190 乔治
27 197 菲尔
60 138 百合

我需要将数据转换成一种格式,其中每个名字都有一列,其中包含个人的身高,该行包含其他列的空白或空值,除了年龄和用户身高

我尝试了联合和连接的各种组合,但我似乎无法通过联合获得新的列,而且我似乎无法连接和保留数据,因为实际上没有年龄重叠(我需要保留所有数据,所以 ON 子句给我带来麻烦)

我能够从中获取数据的最接近的查询是

with aaa as (
  SELECT age, height as "george" from table1 where name in ($GRAFANA_VARIABLE1),
    bbb as SELECT age, height as "lily" from table1 where name in ($GRAFANA_VARIABLE2)
)
SELECT aaa.age, george, lily, from aaa FULL JOIN bbb on bbb.age = aaa.age

这导致

年龄 乔治 百合
15 180
148
17 187
147
19 190
148
21 190
138

这会丢失我的百合年龄数据。我知道我很接近,我还可以使用另一个查询将年龄数据保留在第二列中,我将 bbb 的年龄重命名为 age2,但是为了我使用的绘图工具的目的,x 轴数据必须全部存在于一个单一的列,y 轴上的每个系列也是它自己的列

sql postgresql union outer-join self-join
© www.soinside.com 2019 - 2024. All rights reserved.