首页 > 解决方案 > Oracle SQL 开发人员查询

问题描述

我有两张桌子:

T1

一个 C D
1 9 2 不适用
2 8 5 不适用
3 7 4 不适用

T1

X Z
4 9 2
2 3 5
3 5 4

我想根据与表 T2 的匹配从表 T1 中选择列 D,对于以下条件如果 A 列 = X 列或 B 列 = Y 列和 C 列 = Z 列,则将 D 列选择为 'Y' 否则 'N '。

SELECT CASE WHEN ((T1.A = T2.X OR T1.B = T2.Y) AND T1.C = T2.Z) THEN 'Y'
ELSE 'N'
END AS D FROM T1,T2

在输出中,我得到相同行的 Y 和 N,我只想得到 Y 或 N 作为 D 列。

标签: sqloracle

解决方案


也许你想要exists

select t1.*,
       (case when exists (select 1
                          from t2
                          where t1.a = t2.x or
                                (t1.b = t2.y and t1.c = t2.z)
                         )
             then 'Y' else 'N'
        end) as flag
from t1;

注意:我可能有括号错误。你的英文语句和示例代码有不同的逻辑。


推荐阅读