我正在使用 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
您没有列
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;