mysql中不同列的case语句[重复]

Posted

技术标签:

【中文标题】mysql中不同列的case语句[重复]【英文标题】:Case statement for different columns in mysql [duplicate] 【发布时间】:2016-03-28 19:46:06 【问题描述】:

我想创建一个表格,其中行和 3 列的年份为每年收入低于 500k、500k 和 1M 之间、大于 1M 的项目数。我被告知要尝试案例陈述,但我真的无法完成。我正在使用 mysql

我的字段是财政年度和 AdjRevenue1YCommited from financials_tbl。

我开始的目标是只获得 3 列(年,低于 500,介于 500 和 1M 之间)

select fiscalYear,

    Case
        When AdjRevenue1YCommited < 500000 then count(AdjRevenue1YCommited)
        Else null
        end as b500,

    Case
        When AdjRevenue1YCommited between 500000 and 1000000  then count(AdjRevenue1YCommited)
        Else null
        end as a500

    from financials_tbl
    group by fiscalYear

【问题讨论】:

【参考方案1】:

试试这个:

select fiscalYear,
       sum(AdjRevenue1YCommited < 500000) as b500,
       sum(AdjRevenue1YCommited between 500000 and 1000000) as a500
from financials_tbl
group by fiscalYear

【讨论】:

Giorgos 您的回答有效,但我不明白您为什么使用 Sum 而不是 count。计数在两列中带来相同的值,这是错误的 @FedericoSanchez 使用SUM,每次括号内的谓词为真时,结果加1。使用的谓词完全不同,所以我看不出结果如何相同。

以上是关于mysql中不同列的case语句[重复]的主要内容,如果未能解决你的问题,请参考以下文章

case 语句中的多个条件重复表中的行

“滚动”记录一式三份,嵌套的case语句(或循环)

SQL中CASE WHEN THEN的用法

MySQL CASE 语句在 Workbench 和 Angular 中返回不同的结果

mysql中case用法

为啥我不能在计算列的 case 语句中使用子查询