两条记录之间的SQL检查链接(大小写、时间和时间)
我在表中有一些记录:两条记录之间的SQL检查链接(大小写、时间和时间),sql,oracle,plsql,Sql,Oracle,Plsql,我在表中有一些记录: 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 请尝试以下查询: SELECT * FROM yo
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
请尝试以下查询:
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
嗯。。。这个怎么样?但我现在在独立检查每个ID的关系时遇到了问题
SELECT a. ID, a.service,
CASE
WHEN a.service IN ('C','C1') THEN 'Yes'
ELSE 'No'
END
FROM t1 a
如果我理解正确,您可以使用聚合:
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;
SUMCASE。统计与条件匹配的行数。>0只是表示至少存在一行。您能给出更多不同类型链接的示例吗?结果应该是什么?我应该从服务地图手动创建服务之间的链接。例如,如果in ID是服务XZ1,则on ID必须是服务FU2。我有大约15-20个这样的链接。你能用一个例子发布预期的输出吗?预期的结果是显示给定ID的所有未链接服务。ID服务结果_LINK 2 a No 2 D2 NoGood!但服务名称中并不总是有+%。一个链接的服务可以是XYZ和ABC。我已经回答了您发布的确切问题。如果您试图在ABC和XYZ之间建立链接,这两个字符串没有任何共同点,那么您需要告诉我们如何可能知道存在任何关系。这种关系是由假设确定的。有人发明了若在任何ID上存在服务ABC,那个么也必须在这个ID上服务XYZ,若并没有,那个么对系统来说是错误的,现在我试图找到所有并没有关系的ID。