存在的情况

时间:2019-03-13 17:56:15

标签: sql oracle case where exists

我正在尝试创建一个字段,如果研究中列出的任何委员会是DSMB,则如果不是“否”,则为“是”。我正在使用Oracle SQL Developer。

一项研究可以附加多个委员会,但我希望将其保留在一条直线上。

但是,此查询正在过滤掉没有DSMB委员会的所有委员会。

我希望所有研究都显示出来,如果有DSMB,则为是,否则为否。

SELECT STUDY,
    CASE WHEN
 EXISTS(SELECT COMMITTEE 
                FROM Database 
                  WHERE COMMITTEE = 'DSMB')
            THEN 'YES'
              ELSE 'NO'
                               END "DSMB"

FROM DATABASE

谢谢!

1 个答案:

答案 0 :(得分:1)

如果我理解正确,则可以使用窗口功能:

SELECT STUDY,
       MAX(CASE WHEN COMMITTEE = 'DSMB' THEN 'YES' ELSE 'NO' END) OVER (PARTITION BY STUDY) as "DSMB"
FROM DATABASE