首页 > 解决方案 > 存在时的情况

问题描述

我正在尝试创建一个字段,如果研究中列出的任何委员会是 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

谢谢!!

标签: sqloraclecasewhereexists

解决方案


如果我理解正确,您可以使用窗口函数:

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

推荐阅读