如果存在的情况

问题描述 投票:0回答:1

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

一项研究可以有多个委员会,但我想把它保持在一条线上。

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

我希望所有的研究都能显示出来,如果它有DSMB则为yes,如果没有则为NO。

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

FROM DATABASE

谢谢!!

sql oracle case where exists
1个回答
1
投票

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

SELECT STUDY,
       MAX(CASE WHEN COMMITTEE = 'DSMB' THEN 'YES' ELSE 'NO' END) OVER (PARTITION BY STUDY) as "DSMB"
FROM DATABASE
© www.soinside.com 2019 - 2024. All rights reserved.