我有一个结构类似于下面结构的表:
|C1|C2|C3|
|K1|V1|??|
|K1|V2|??|
|K1|V3|??|
|K2|V2|??|
我需要编写一个查询来检查密钥(假设K1)是否映射到任何行中的特定值(比如V2)。如果是,则将C3列中的值取为1,否则取0。
我很感激任何帮助。
答案 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