【问题标题】:CASE WHEN EXISTS存在时的情况
【发布时间】:2019-03-13 17:56:14
【问题描述】:

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

谢谢!!

【问题讨论】:

  • 样本数据和期望的结果会有所帮助。

标签: sql oracle case where exists


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2011-11-22
    • 1970-01-01
    • 1970-01-01
    • 2019-12-08
    • 1970-01-01
    • 2019-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多