我在表中有一些记录:
ID Services
2 A
2 C
2 C1
2 D2
我正在尝试进行查询,以选择服务之间的链接。
例如:如果对于ID 2,存在服务C,然后检查是否存在服务C1,则结果为是或否。
SELECT a. ID, a.service,
CASE
WHEN (a.service ='C') = (a.service = 'C1') THEN 'Yes'
ELSE 'No'
END
FROM t1 a
答案 0 :(得分:0)
尝试此查询:
SELECT *
FROM yourTable t1
WHERE NOT EXISTS (SELECT 1 FROM yourTable t2
WHERE (t2.Services LIKE t1.Services + '%' OR
t1.Services LIKE t2.Services + '%') AND
t1.ID = t2.ID AND t1.Services <> t2.Services);
这仅返回A
和D2
。
答案 1 :(得分:0)
嗯...这是怎么回事?但是我现在在独立检查每个ID的关系时遇到问题...
SELECT a. ID, a.service,
CASE
WHEN a.service IN ('C','C1') THEN 'Yes'
ELSE 'No'
END
FROM t1 a
答案 2 :(得分:0)
如果我理解正确,则可以使用聚合:
SELECT ID,
(CASE WHEN SUM(CASE WHEN service = 'C' THEN 1 ELSE 0 END) > 0 AND
SUM(CASE WHEN service = 'C1' THEN 1 ELSE 0 END) > 0
THEN 'Yes' ELSE 'No'
END) as c_c1_flag
FROM t1
GROUP BY ID;
SUM(CASE . . . )
对符合条件的行数进行计数。 > 0
只是说至少存在一行。