hive查询将键映射到多个值

时间:2017-06-27 01:51:32

标签: sql hadoop hive hql

我有一个结构类似于下面结构的表:

|C1|C2|C3|
|K1|V1|??|
|K1|V2|??|
|K1|V3|??|
|K2|V2|??|

我需要编写一个查询来检查密钥(假设K1)是否映射到任何行中的特定值(比如V2)。如果是,则将C3列中的值取为1,否则取0。

我很感激任何帮助。

1 个答案:

答案 0 :(得分:-1)

folloiwng查询应该提供您想要的结果。子查询标识所有C1值,这些值在C2中至少映射一次特定值。如果是这样,那么我们将C3值渲染为1,否则我们显示0。

SELECT
    t1.C1,
    t1.C2,
    CASE WHEN t2.C1 IS NOT NULL THEN 1 ELSE 0 END AS C3
FROM yourTable t1
LEFT JOIN
(
    SELECT C1
    FROM yourTable
    GROUP BY C1
    HAVING SUM(CASE WHEN C2 = 'V1' THEN 1 ELSE 0 END) > 0
) t2
    ON t1.C1 = t2.C1