Sql Case与join一起使用时返回多个值
我在使用case时遇到问题,并在redshift中连接在一起 (这不是我的真实数据,只是举个例子,所以max帮不了我)。 我的问题是: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
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;