首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何基于Oracle中的Case语句使用Group?

如何基于Oracle中的Case语句使用Group?
EN

Stack Overflow用户
提问于 2012-07-04 08:28:30
回答 3查看 117.3K关注 0票数 20

我有一个SQL查询,在这里我使用Oracle来比较一个日期列是否小于或大于当前日期。但是我如何在CASE-statement中使用这个GROUP BY-statement呢?我想清点每一宗个案的纪录。

例如。

代码语言:javascript
复制
select
    (case
        when exp_date > sysdate then 1
        when exp_date <= sysdate then 2
        else 3
     end) expired, count(*)
from mytable
group by expired

但是,当我尝试这样做时,会发现一个错误:ORA-00904。有什么建议吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-07-04 08:30:56

代码语言:javascript
复制
select
(case
    when exp_date > sysdate then 1
    when exp_date <= sysdate then 2
    else 3
 end) expired, count(*)
from mytable
group by (case
    when exp_date > sysdate then 1
    when exp_date <= sysdate then 2
    else 3
 end)
票数 25
EN

Stack Overflow用户

发布于 2012-07-04 08:31:58

使用内联视图:

代码语言:javascript
复制
SELECT expired,
       count(*)
  FROM (SELECT (CASE
                   WHEN exp_date > SYSDATE THEN 1
                   WHEN exp_date <= SYSDATE THEN 2
                   ELSE 3
                 END) AS expired
          FROM mytable)
GROUP BY expired;

希望能帮上忙..。

票数 26
EN

Stack Overflow用户

发布于 2016-04-15 10:50:21

作为附加输入,虽然它与此线程无关,但您也可以聚合case语句,而无需在group by子句中提及它。

代码语言:javascript
复制
SELECT
   WORK_ORDER_NUMBER,
   SUM(CASE WHEN STOCK_CODE LIKE 'xxxx' THEN STOCK_QUANTITY ELSE 0 END) AS TOTAL
FROM Table
GROUP BY WORK_ORDER_NUMBER;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11325268

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档