在SQL中打印值取决于它在另一列中的存在

时间:2016-11-11 00:44:36

标签: sql

我有一张表格

Col1  | Col2
-------------
A     |   C
B     |   A
C     |   X
D     |   A
E     |   NULL

如果Col2中存在Col1的任何元素,则应将其打印为 元素,是。

如果在Col2中不存在,则需要将其打印为元素,NO,如果相应的col2值为NULL,则需要将其打印为元素,NULL

所以最终输出应该看起来像

A YES
B NO
C YES
D NO
E NULL

我能够为同一个人编写三个单独的查询,但我正在努力解决如何将它们放入SQL中的Case语句。

SELECT Col1 FROM table WHERE col1 IN (SELECT col2 FROM table)

Select col1 FROM table where Col2 is NULL

SELECT Col1 FROM table WHERE col1 NOT IN (SELECT col2 FROM table)

我尝试将它们放在案例陈述中

Select col1, Case
when (SELECT Col1 FROM table WHERE col1 IN (SELECT col2 FROM table))
then "YES"
when (Select col1 FROM table where Col2 is NULL)
then "NULL"
else
"NO"

但是我收到了一个错误。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

我希望查询看起来像这样:

select col1,
       (case when col2 is null then NULL
             when col1 in (select t2.col2 from t t2)
             then 'YES'
             else 'NO'
        end)
from t;