【发布时间】:2018-07-16 07:43:43
【问题描述】:
我在使用带有连接的 case 语句时遇到问题。
我有两张桌子。 tbl_a:
和 Tbl_b:
我正在运行以下查询:
SELECT
tbl_a.id,
(
CASE
WHEN tbl_b.param_type = 'Ignition' Then param_value
WHEN tbl_b.param_type = 'Turn' Then param_value
WHEN tbl_b.param_type = 'Speed' Then param_value
WHEN tbl_b.param_type = 'Break' Then param_value
END
) as value
FROM
public.tbl_a
JOIN public.tbl_b on tbl_b.id = tbl_a.id
我想为 tbl_a 中的每个 id 获取来自 tbl_b 的第一个匹配项。如果 tbl_b 中有一个 id 表明他的参数类型是“点火”,那么我想得到他的值。如果没有,那么我想获取参数类型“Turn”的值,依此类推。但是当我运行查询时,我得到了所有可能的匹配项:
我明白为什么我会得到这些结果,但我不知道如何得到我想要的结果。 任何帮助将不胜感激,谢谢!
【问题讨论】:
-
总是有点火吗?
-
@Paul 不,你可以看到 id 2 和 3 没有..
-
所以,需要明确的是,您希望结果为
2,7;5,8;1,2;3,7;4,7?
标签: sql join case amazon-redshift