sql - 编写多个条件时的 Case 的更好方法

标签 sql excel openedge case-when progress-db

我编写了以下查询来帮助我将数据分段到不同的单元格中。这有 200 多个条件,所以我只提供了一个小样本。有没有更好的方法让我写这个语句,因为根据研究进展不会让我做超过 50 个 CASE WHEN....THEN 语句。

SELECT    

Company_0.CompanyID 
    ,Company_0.CoaCompanyName
    ,(CASE 
    WHEN Company_0.CompanyID = 7942127 THEN 'BLUE'
    WHEN Company_0.CompanyID = 7950986 THEN 'BLUE'
    WHEN Company_0.CompanyID = 7955733 THEN 'BLUE'
    WHEN Company_0.CompanyID = 7955922 THEN 'BLUE'
    WHEN Company_0.CompanyID = 7956194 THEN 'RED'
    WHEN Company_0.CompanyID = 9166261 THEN 'RED'
    WHEN Company_0.CompanyID = 9167003 THEN 'YELLOW'
    WHEN Company_0.CompanyID = 9167015 THEN 'YELLOW
ELSE NULL
END' AS 'CELL'

当结果返回时,它应该看起来像这样:

ID              COMPANY NAME          CELL
-------------------------------------------------------
7942127             A                 BLUE
7950986             B                 BLUE
7955733             C                 BLUE
7955922             D                 BLUE
7956194             E                 RED
9166261             F                 RED
9167003             G                 YELLOW
9167015             H                 YELLOW

最佳答案

使用

SELECT    
Company_0.CompanyID 
    ,Company_0.CoaCompanyName
    ,(CASE 
    WHEN Company_0.CompanyID in( 7942127,7950986,7955733,7955922 ) THEN 'BLUE'
    WHEN Company_0.CompanyID in( 7956194,9166261 ) THEN 'RED'
    WHEN Company_0.CompanyID in( 9167003,9167015 ) THEN 'YELLOW'

ELSE NULL
END' AS 'CELL'

关于sql - 编写多个条件时的 Case 的更好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55100967/

相关文章:

mysql - 修复 MySQL .SQL 脚本失败 - INSERT 有 FK 列约束

mysql - 提取上周数据(而不是过去 7 天)

mysql - 获取嵌套集合祖先 where 条件

ruby - 如何从 Ruby 运行 Excel 宏?

vba - 获取数据透视表的源范围

Excel VBA FSO.GetFolder(folderPath) 在 2007 年但不是 2010 年工作

mysql - 如何对 5 个表执行 JOIN 并获取我需要的数据?

java - 获取OpenEdge数据库中的rowid从1到n

database - 停止来自 Progress data server for oracle 的索引相关提示和条款

java - 从进度数据库中的备注字段中选择特定列值的语法