Sql Case与join一起使用时返回多个值

Sql Case与join一起使用时返回多个值,sql,postgresql,join,case,amazon-redshift,Sql,Postgresql,Join,Case,Amazon Redshift,我在使用case时遇到问题,并在redshift中连接在一起 (这不是我的真实数据,只是举个例子,所以max帮不了我)。 我的问题是: select a.num1, (case when b.param = 'd' then b.param when b.param = 'c' then b.param when b.param = 'b' then b.param when b.param = 'a' then b.param end) from table a inner join tab

我在使用case时遇到问题,并在redshift中连接在一起 (这不是我的真实数据,只是举个例子,所以max帮不了我)。 我的问题是:

select a.num1, 
(case when b.param = 'd' then b.param
when b.param = 'c' then b.param
when b.param = 'b' then b.param
when b.param = 'a' then b.param end)
from table a inner join table b on a.num1 = b.num1
表a:

表b:

我得到的结果是:

但我只想得到每个“num1”的第一个匹配,比如:


我怎样才能做到这一点?谢谢

对于此数据,可以使用
max()

这可以简化为:

select a.num1, max(b.param)
from table a inner join
     table b
     on a.num1 = b.num1
group by a.num1;

这回答了您提出的问题。这可能无法解决您的实际问题。我建议您提出另一个问题,提供更合适的示例数据,并更好地描述您想要做的事情。

对于此数据,您可以使用
max()

这可以简化为:

select a.num1, max(b.param)
from table a inner join
     table b
     on a.num1 = b.num1
group by a.num1;

这回答了您提出的问题。这可能无法解决您的实际问题。我建议你问另一个问题,用更合适的样本数据和对你想做什么的更好描述。

这个问题在

我需要使用:


这个问题在一次会议上得到了解决

我需要使用:

SELECT a.id,
       COALESCE( MAX(CASE WHEN b.param_type = 'Ignition' THEN a.param_value END), 
                 MAX(CASE WHEN b.param_type = 'Turn' THEN a.param_value END),
                 MAX(CASE WHEN b.param_type = 'Speed' THEN a.param_value END),
                 MAX(CASE WHEN b.param_type = 'Break' THEN a.param_value END)
               ) as value
FROM public.tbl_a a JOIN
     public.tbl_b
     ON b.id = a.id
GROUP BY a.id;