合并其中一行为空的重复行

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

我正在使用 AWS Redshift。我有一张看起来像这样的桌子:

Id             key             value1            value2        value3       
1              xxx             A                 NULL           NULL        
1              xxx             NULL              B              NULL
2              uuu             NULL              NULL           C

如果 id 重复,则整行将相同,除了 value1、value2 和 value3。对于这三列,一次只会填充一列。我怎样才能合并这些行,使我的最终结果看起来像这样?

Id             key             value1              value2         value3
1              xxx              A                  B              NULL
2              uuu              NULL               NULL           C

如果这 3 列有值,我想使用它。否则,我想让该值为 NULL。

当我尝试这个时:

Select 
id, key, a, b, 
max(value1) as value1,
max(value2) as value1,
 max(value3) as value3
from my_table group by id, key, a, b

我收到此错误,可能是由于 NULL。

failed to find conversion function from "unknown" to text

我还可以尝试什么来达到我想要的结果?

编辑:

with test as (
   id,
   key,
   'business_vault' as a,
   b
 from my_table
)
select 
  a
 from test group by a
sql database postgresql amazon-redshift window-functions
1个回答
0
投票

您没有列

a
也没有
b
,如图所示,它们是 。现在您可以选择这些,但必须通过将 then 括在单引号 (') 中来获取文字值。但我不认为这就是您所追求的。我认为只要删除它们就可以得到你想要的东西。所以:(参见演示

Select id, key
     , max(value1) as value1
     , max(value2) as value1
     , max(value3) as value3
  from my_table 
 group by id, key;
© www.soinside.com 2019 - 2024. All rights reserved.